Cześć,
Mam program, ktory wysyla zapytanie postem do API a nastepnie chcialbym utworzyc liste z wszystkimi danymi, ktore dostane w odpowiedzi, ale w momencie gdy wywoluje zapytanie do API to przy pierwszym wywolaniu dostaje pusta odpowiedz a w momencie gdy jeszcze raz ja odpale to zaczyna juz smigac. Czym jest to spowodowane?
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val api = ApiConnection()
button_checkIfThisAccountExit_mainActivity.setOnClickListener {
api.loginRequest(editText_login_activityMain.text.toString(), editText_password_mainActivity.text.toString())
Log.v("parser", "result: " + api.data.size)
}
}
}
class ApiConnection {
var baseApiURl = "http://localhost"
var data = arrayListOf<User>()
fun connectApi(): ApiService {
Log.v("parser", "connectApi")
val retrofit = Retrofit.Builder()
.baseUrl(baseApiURl)
.addConverterFactory(GsonConverterFactory.create())
.build()
return retrofit.create(ApiService::class.java)
}
fun loginRequest(login: String, password: String): ArrayList<User>{
Log.v("parser", "loginRequest")
val service = connectApi()
val call = service.login(login, password)
call.enqueue(object: Callback<UserResponse> {
override fun onFailure(call: Call<UserResponse>?, t: Throwable?) {
Log.v("retrofit", "call failed")
}
override fun onResponse(call: Call<UserResponse>?, response: Response<UserResponse>?) {
data.add(
User(
response!!.body()!!.idUser,
response!!.body()!!.login,
response!!.body()!!.password,
response!!.body()!!.name,
response!!.body()!!.surname,
response!!.body()!!.lastLogin
)
)
}
})
return data
}
}
W momencie gdy po nacisnieciu przycisku i wywolaniu metody zapytania dlugosc listy jest rowna 0, ale gdy ponownie nacisne przycisk to zostaje dodane to co mialo byc dodane przy pierwszym wywolaniu tzn. jak naciskam to powinna byc lista rowna 1 a dostaje 0, nastepnie naciskajac znow dostaje liste rowna 1 zamiast rowna 2.
Czy jest to spowodowana biblioteka retrofit?