繁体   English   中英

RecyclerView 适配器不使用数据绑定更新数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM