在使用数据绑定时如何设置嵌套的回收器视图适配器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在使用数据绑定时如何设置嵌套的回收器视图适配器?相关的知识,希望对你有一定的参考价值。

我有一个嵌套的回收站视图(父和几个孩子),我也使用数据绑定。

问题是,由于嵌套回收器的适配器不同,我不知道如何在Kotlin或Java中设置嵌套的回收器适配器。

enter image description here

如果我不想使用数据绑定,这个link的解决方案工作正常。

谢谢

答案

数据绑定是数据驱动,因此您可以将子适配器放在父模型中,并为recyclerview定义数据绑定适配器。

pulic class ParentModel
{
    private ChildAdapter childAdapter;
}
public class DataBindingAdapters
{
    @BindingAdapter({"adapter"})
    public void setRecyclerViewAdapter(RecyclerView recyclerView, ChildAdapter childAdapter)
    {
        recyclerView.serAdapter(childAdapter);
    }
}
<recyclerView
    app:adapter="@{model.childAdapter}"/>
另一答案

使用android数据绑定设置RecyclerView适配器。

布局代码:

数据部分:

<data>
    <variable
        name="adapter"
        type="com.app.adapter.RecyclerViewAdapter" />
</data>

Recyclerview布局:

<androidx.recyclerview.widget.RecyclerView
  android:id="@+id/recycler_view"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  app:adapter="@{adapter}"
  app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
  android:orientation="vertical"/>

Java文件:DataBindingAdapters.java

public class DataBindingAdapters {

    @BindingAdapter({"adapter"})
    public static void setRecyclerViewAdapter(RecyclerView recyclerView,
                                        RecyclerViewAdapter recyclerViewAdapter) {

        recyclerView.setAdapter(RecyclerViewAdapter);
    }
}

注意: 1. setRecyclerViewAdaptermust是静态的,以避免这个error。 2.在我的代码中,RecyclerViewAdapter是自定义的recyclerview适配器。 3.在代码或布局文件中设置LayoutManager,但不在两者中。(使用android数据绑定时,首选Xml) 4.请参阅此SO post以获取与布局管理器相关的查询,例如如何设置androidX,方向,gridview行等。

以上是关于在使用数据绑定时如何设置嵌套的回收器视图适配器?的主要内容,如果未能解决你的问题,请参考以下文章

为什么在加载模型后实例化适配器时为什么需要使用notifyDataSetChanged()?

在复选框状态更改时从回收器视图适配器更新 sqlite 数据库

插入数据时Recyclerview自动向上滚动

在回收器视图适配器android Kotlin之外更新ProgressBar

嵌套回收器视图高度不包含其内容

将 listview 适配器更改为回收器视图适配器