咱们什么都不说 先附上知识点
数据绑定的几种方式
点击事件绑定的几种方式
双向绑定数据
RecycleView的数据绑定
@InverseMethod 标签的使用
在DataBinding基本使用(3)中已经讲解了双向绑定数据,可能本人在某些地方理解偏差或错误,往广大读者指出并一起讨论、学习。
RcycleView
咱直接上代码
XML布局
<import type="java.util.List"></import>
<variable
name="data"
type="List<String>"></variable>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:data="@{data}"></android.support.v7.widget.RecyclerView>
代码
@Override
protected void onCreate(Bundle savedInstanceState) {
....
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add(i + " list_item");
}
binding.setData(list);
}
@BindingAdapter("android:data")
public static void setData(RecyclerView recyclerView, List<String> list_data) {
Adapter adapter = new Adapter(recyclerView.getContext());
adapter.setDatas(list_data);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
}
接下来附上Item的布局
<?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>
<variable
name="data"
type="String"></variable>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{data}" />
</LinearLayout>
</layout>
RecycleView的重点其实就是ViewHolder
public class AdapterView extends RecyclerView.ViewHolder {
ItemDemoBinding binding;
public AdapterView(ItemDemoBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
public ItemDemoBinding getBinding() {
return binding;
}
}
//接着在引用的时候
@Override
public void onBind(AdapterView viewHolder, int realPosition, String data) {
viewHolder.binding.setData(data);
viewHolder.binding.executePendingBindings();//用户刷新数据
}
好了 RcycleView的使用就到此结束是不是也很简单?