Поскольку это асинхронный вызов c, и вы переопределяете функцию, которая ничего не возвращает, вы не можете напрямую вернуть int.
Есть 2 варианта:
- Опция 1: используйте обратный вызов, где вы хотите вернуть int (рекомендуется)
- Опция 2: оберните вызов asyn c следующим кодом (не рекомендуется, но работает)
Пример варианта 2 (Не рекомендуется. Только для того, чтобы показать, что это можно сделать):
private fun like(id:Int):Int{
var responseFlag = true
var started = false
var result = 0
while(responseFlag){
if(!started){
started = true
val params = RequestParams()
params.put("id", id)
val client = AsyncHttpClient()
client.post("https://www.ttt.com/ttt.php", params, object : JsonHttpResponseHandler(){
override fun onSuccess(statusCode: Int, headers: Array<Header>?, response: JSONArray?){
result = 1
responseFlag = false
}
override fun onFailure(statusCode: Int, headers: Array<Header>?, e: Throwable, response: JSONArray?){
result = 0
responseFlag = false
}
})
}
}
return result
}
Это будет выполнено один раз и дождаться запроса результат.
Он заблокирует ваш процесс, поэтому это не рекомендуется, поскольку точка асинхронного вызова c должна быть асинхронной.
Также, как сказано в комментариях, вы не должны использовать этот код наBindViewHolder.
Надеюсь, это поможет:)