![](/img/trans.png)
[英]RecyclerView adapter doesn't update on notifyDataSetChanged() (not Collection)
[英]RecyclerView adapter doesn't update data with databinding
请帮我解决一个问题。 我有一个带有 recyclerView 的 activity.xml 文件,我设置了一个适配器,如:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
android:visibility="@{viewModel.recyclerVisibility}"
app:adapter="@{viewModel.adapter}"
app:layout_constraintTop_toBottomOf="@id/title" />
所以我在 xml 中设置了适配器,但在我的 viewModel 中从服务器接收数据后它没有更新:
someObservable.observeOn(AndroidSchedulers.mainThread()).subscribe {
adapter.setItems(it)
notifyPropertyChanged(BR.adapter)
})
要在 xml 中绑定适配器并访问它,我在我的 viewModel 中有这样的方法:
@Bindable
fun getAdapter(): SomeAdapter {
if (adapter == null) {
adapter = SomeAdapter(emptyList())
}
return adapter as SomeAdapter
}
在我的适配器中,我有更新数据列表的方法:
fun setItems(someData: List<SomeData>) {
this.someData = someData
notifyDataSetChanged()
}
那么这里有什么问题呢? 因为我在 UI 上看到了空适配器,所以我猜绑定不能正常工作..
这是一个愚蠢但并不明显的错误,但问题已解决:) 我忘了为我的 recyclerView 添加布局管理器,例如:
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
在 xml 中,或者您可以以编程方式进行.. **它发生了:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.