Почему ответ от onResponse пуст? - PullRequest
0 голосов
/ 29 февраля 2020

Как получить правильный ответ от модифицированного httpRequest? Когда я нажимаю кнопку в первый раз, я получаю результат из списка как 0, но когда я делаю это снова, он работает некорректно, и я получаю результат как: 1 (я имею в виду размер списка)

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
    }
}
...