Прежде всего, мы предполагаем, что вы не хотите использовать архитектуру MVVM или около того. Но я действительно рекомендую вам прочитать о компонентах архитектуры Android, таких как ViewModel и LiveData, чтобы понять, как должен выполняться поток данных в приложениях для Android.
Переходя к основам (не очень понятный способ), мы должны создать интерфейс и передать ссылку на класс Product, и в случае успеха вы должны использовать ссылку для вызова операции для обновления текстового представления.
Шаг 1: создать интерфейс
interface ProductListener
{
fun onSuccess()
}
Шаг 2. Внедрите ProductListener в свою деятельность
class GameActivity : AppCompatActivity(),ProductListener {
...
...
...
override fun onSuccess() {
}
}
Шаг 3: передать ссылку на слушателя / активность в класс Product
val product = Product(3564700014677, this) //inside your activity
class Product(code: Long, var listener: ProductListener) {
...
...
private fun run(url: String) {
val request = Request.Builder()
.url(url)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call?, e: IOException) {}
override fun onResponse(call: Call?, response: Response){
val jsonData = response.body()?.string()
val Jobject = JSONObject(jsonData)
name = Jobject.getJSONObject("product").getString("product_name")
// invoke listener here to let activity know the response
listener.onSuccess()
}
})
}
}
Шаг 4. Обновление textview внутри реализации действия onSuccess ()
class GameActivity : AppCompatActivity(),ProductListener {
...
...
...
override fun onSuccess() {
textView.text = product.name
}
}