在这个问题的标签中指出java,因为java和kotlin是兼容的,这里有一个与java非常相似的例子
我创建了一个在列表视图中显示数据的程序。我正在学习rxjava2,并决定制作一个示例,其中使用rxjava获得的数据显示在列表视图中。下面是listview适配器的代码。
class AdapterListView(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)
}
override fun onCreate() {
data = ArrayList()
}
override fun onDataSetChanged() {
data!!.clear()
Observable // There is pseudo observable for example
.observeOn(SchedulerProvider.ui())
.subscribe (
{
for(i in it.indices) {
Log.e("IT::", it[i])
data!!.add(it[i])
}
},
{
data!!.add("ERROR")
}
)
.toString()
}
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.textView, data!![position])
return rView
}
override fun getLoadingView(): RemoteViews? {
return null
}
override fun getViewTypeCount(): Int {
return 1
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun hasStableIds(): Boolean {
return true
}
}
使用subscribe,我获取数据并添加到动态数组中。对于log.e,数据显示在屏幕上,也就是说,没有错误,但是它们没有添加到数据中,或者它们被添加,但是由于rxjava是异步运行的,所以没有数据添加到数据中。想知道是否有一种方法来实现它,以便您可以使用rxjava将数据输出到listview吗?
暂无答案!
目前还没有任何答案,快来回答吧!