提问者:小点点

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


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

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

如果我不想使用数据绑定,此链接中的解决方案可以正常工作。

谢啦


共2个答案

匿名用户

数据库绑定是数据驱动,因此您可以将子适配器放在父模型中,并为回收器视图定义一个数据绑定适配器。

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>

回收视图布局:

<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.setRecyclerViewAdapter必须是静态的,以避免此错误。
2.在我的代码中RecyclerViewAdapter是自定义的回收器视图适配器。
3.在代码中或布局文件中设置LayoutManager,但不能同时设置两者。(使用android数据绑定时首选Xml)
4.有关布局管理器的查询,请参阅SO帖子,例如如何设置androidX、方向、网格视图行等。

相关问题