Как получить данные в корутине и обновить listview в виджете?
Я получаю данные из базы с помощью этой ф-ии:
suspend fun getDataTasksForWidget(context: Context, appWidgetId: Int) : ArrayList<Task> {
val items: ArrayList<Task> by lazy { arrayListOf<Task>() }
val duration = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE).getInt(PREF_DURATION_WIDGET_TASKS+"_$appWidgetId", 0)
val tmp = CoroutineScope(Dispatchers.IO).launch {
val data = App.db.taskDao().getActive(duration)
withContext(Dispatchers.Main){
val filtered = data.filter { task ->
!task.isExpired()
}
items.clear()
items.addAll(filtered)
}
}
tmp.join()
return items
}
Затем эти данные попадают в RemoteViewsFactory в методе onDataSetChanged():
override fun onDataSetChanged() {
CoroutineScope(Dispatchers.IO).launch {
data = getDataTasksForWidget(context, widgetID)
}
}
Но естественно, в виджете listView пустой, потому что обновился с пустым data. А когда я его получил в корутине, как дальше обновить список?