【问题标题】:How to set nested recycler views adapters when we use data binding?使用数据绑定时如何设置嵌套的回收器视图适配器?
【发布时间】:2019-01-14 06:49:40
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 检查我的回答是否解决了您的问题。

标签: android kotlin android-recyclerview android-listview android-databinding


【解决方案1】:

数据绑定是数据驱动,所以你可以将子适配器放在父模型中,并为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}"/>

【讨论】:

    【解决方案2】:

    使用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.setRecyclerViewAdapter必须是静态的以避免error
    2. 在我的代码中RecyclerViewAdapter 是自定义recyclerview 适配器。
    3.在代码或布局文件中设置LayoutManager,但不能同时在两者中设置。(使用android数据绑定时首选Xml)
    4. 参考SO post 查询布局管理器相关的问题,比如如何设置androidX、方向、gridview 行等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多