问题描述
在widget的ListView中,我使用RxJava显示了Room DB中的数据,但是数据并没有立即更新,而是只有当我按下“Update”按钮时,才会调用updateAppWidget()函数。
class ListViewAdapter(ctx: Context,intent: Intent): RemoteViewsService.RemoteViewsFactory {
private var context: Context? = null
private var widgetId = 0
var data: ArrayList<String>? = null
init {
context = ctx
widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID)
// get data
}
override fun onCreate() {
data = ArrayList()
getList()
}
override fun onDestroy() {}
override fun getCount(): Int {
return data!!.size
}
override fun getViewAt(position: Int): RemoteViews {
val rView = RemoteViews(context!!.packageName,R.layout.list_view)
rView.setTextViewText(R.id.myTextView,data!![position].name)
return rView
}
...
override fun onDataSetChanged() {
// do nothing
}
...
fun getList() {
val v = AIWdataRepositoryGet()
Observable.fromIterable(listofIds.toSet())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMapSingle {
userDatabase.userDao().getById(it)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
.toList()
.map {
it.map {
InfoStruct(
it.Name.toString(),it.Id.toString()
)
}
}
.subscribe(
{
for(c in it) {
data!!.add(c.userName)
}
onDataSetChange()
},{ onError }
).toString()
}
}
你能告诉我我做错了什么以及我需要修复什么以便在加载数据后立即显示在 ListView 中吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)