Передать данные: AsyncTask, WeakReference в EditText

186
11 октября 2017, 06:07

Есть activity с картой, при нажатии на карту происходит асинхронный запрос и возвращаются данные JSON. Одно из полей - адрес. Мне нужно вывести адрес в TextView. Проблема заключается в том, что когда данные приходят я их вижу в логах, но в TextView они обновятся только лишь после следующего нажатия, когда в логах появится другой адрес. Есть решение через WeakReference, но я не представляю как можно его реализовать.

class ParseTask(GLOBAL_POS: LatLng, GLOBAL_POS_PROVIDER: LatLng) : AsyncTask<String, Void, String>() {
    var weakActivity: WeakReference<MapsActivity>? = null
    override fun doInBackground(vararg p0: String?): String? {
        ...   
           println(GLOBAL_ADDRESS)
        ...
        return GLOBAL_ADDRESS
    }
    override fun onPostExecute(result: String?) {
        val activity = weakActivity!!.get()
        if (activity != null){
            activity.address.text = GLOBAL_ADDRESS.toString()
        }
    }
}

Пока решение выглядит так и оно решает мою проблему, но должно быть более элегантное решение:

try {
    Thread.sleep(600)
} catch (e: Exception) {
}

Получается проблема в том, чтобы присвоить значение после завершения AsyncTask. Если делать в сразу после вызова AsyncTask, то присваивается пустое значение, а в самом AsyncTask не получается привязаться к TextView.

Answer 1

Запуск вашего ParseTask должен вот так выглядеть:

val task = ParseTask(...)
task.weakActivity = WeakActivity(instanceOfMapsActivity)
task.execute()
READ ALSO
Коллекция без дублирования элементов

Коллекция без дублирования элементов

Допустим, есть строки А, Б, В, Я, ВПосле добавления в какую коллекцию в ней будет только А, Б, В, Я? Или велосипед писать?

187
запуск powershell скрипта из java

запуск powershell скрипта из java

Пытаюсь запустить shell скрипт из java, но ничего не происходитОбычный txt запускается без проблем

212
Java, JDBC, GROUP BY ROLLUP

Java, JDBC, GROUP BY ROLLUP

В 1С при обходе результата запроса можно обходить запрос иерархическиКаждый итоговый результат содержит кроме полей, еще и вложенный результат,...

177