上面一篇描述了recycleview的使用,他的item绑定是通过在bindviewholder()里面使用itembinding来实现,但是还需要自己设置adapter并初始化adapter。
这篇将实现自动处理adapter
实现功能:recycleview存在两种不同的item,item里面又存在一个recycleview(GridView效果或者横向的recycleview)
注意:
页面的recycleview需要一个model,model里面的数据就是页面xml连recycleview需要的数据源和item的绑定关系;
而这个model里面还需要包含子recycleview需要的数据源和子item的绑定关系
1.导入第三方
//https://github.com/evant/binding-collection-adapter
implementation 'me.tatarka.bindingcollectionadapter2:bindingcollectionadapter:4.0.0'
implementation 'me.tatarka.bindingcollectionadapter2:bindingcollectionadapter-recyclerview:4.0.0'
implementation 'me.tatarka.bindingcollectionadapter2:bindingcollectionadapter-viewpager2:4.0.0'
2.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<!--这个是和原生的差异,原生是没有recycleview的绑定,下面的对象里面直接存储了数据源和item的bingding-->
<variable
name="recycle_viewmodel"
type="com.example.testmvvm.use_github.GithubModel" />
</data>
<androidx.recyclerview.widget.RecyclerView
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:id="@+id/recycleview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:adapter="@{recycle_viewmodel.gitHubRecyclerViewAdapter}"
app:itemBinding="@{recycle_viewmodel.onItemBind}"
app:items="@{recycle_viewmodel.items}" />
</layout>
3.recycleview的item的xml
item的xml如下;item1根据自己需求 原理相同
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<!--这是item自身的数据源-->
<variable