android实现数据绑定6,Android DataBinding(数据绑定)入门与实战(六)RecyclerView Adapter中的使用...

本系列目录前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,除此之外,Data Binding也可以使用在RecyclerView/AdapterView的Adapter中,本文以RecyclerView为例。

获取Binding对象

按照通常的做法,我们在Adapter中会定义一个ViewHolder,在此ViewHolder中取得一些布局View的引用。

使用Data Binding后同样可以简化Adapter中的操作。

比如我们新建布局文件item_binding.xml:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22<?xml version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:gravity="center"

>

android:id="@+id/tv_example"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="16sp" />

新建后我们会发现IDE会为我们生成一个绑定类ItemBinding.java,此时我们就可以把它定义在ViewHolder中:

如果没有生成,依然参考 这篇文章

1

2

3

4

5

6

7

8class ItemsHolder extends RecyclerView.ViewHolder{

ItemBinding binding;

ItemsHolder(View itemView) {

super(itemView);

binding = DataBindingUtil.bind(itemView);

}

}

覆写父类方法onCreateViewHolder(),创建ViewHolder

定义好上面的ViewHolder后,我们就覆写RecyclerView.Adapter的onCreateViewHolder()方法来创建一个ViewHolder:

1

2

3

4

5

6@NonNull

@Override

public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){

View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);

return new ItemsHolder(v);

}

在onBindViewHolder()方法中使用ItemBinding

上面我们创建好ViewHolder后,我们就可以在这个方法中使用它了,用法就跟之前我们在Activity中和Fragment中一样了。

1

2

3

4

5

6@Override

public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position){

ItemsHolder vh = (ItemsHolder)holder;

Item item = getItem(position);

vh.binding.tvExample.setText(item.getName());

}

总结

下一篇我们将会介绍BindingAdapter的使用,它应用的场景也很多,我们将以ImageView来举例,大大简化我们开发中加载网络/本地图片的重复代码(仅需一行代码)。

如有更多疑问,请参考我的其它Android相关博客:我的博客地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值