Android开发教程 - 使用Data Binding(六)RecyclerView Adapter中的使用
本系列目录
- 使用Data Binding(一)介绍
- 使用Data Binding(二)集成与配置
- 使用Data Binding(三)在Activity中的使用
- 使用Data Binding(四)在Fragment中的使用
- 使用Data Binding(五)数据绑定
- 使用Data Binding(六)RecyclerView Adapter中的使用
- 使用Data Binding(七)使用BindingAdapter简化图片加载
- 使用Data Binding(八)使用自定义Interface
- 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法
前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,除此之外,Data Binding也可以使用在RecyclerView/AdapterView的Adapter中,本文以RecyclerView为例。
获取Binding对象
按照通常的做法,我们在Adapter中会定义一个ViewHolder,在此ViewHolder中取得一些布局View的引用。
使用Data Binding后同样可以简化Adapter中的操作。
比如我们新建布局文件item_binding.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>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
<TextView
android:id="@+id/tv_example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp" />
</LinearLayout>
</layout>
新建后我们会发现IDE会为我们生成一个绑定类ItemBinding.java,此时我们就可以把它定义在ViewHolder中:
如果没有生成,依然参考 这篇文章
class ItemsHolder extends RecyclerView.ViewHolder {
ItemBinding binding;
ItemsHolder(View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
}
}
覆写父类方法onCreateViewHolder(),创建ViewHolder
定义好上面的ViewHolder后,我们就覆写RecyclerView.Adapter的onCreateViewHolder()方法来创建一个ViewHolder:
@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中一样了。
@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相关博客:我的博客地址
Android开发教程 - 使用Data Binding(六)RecyclerView Adapter中的使用的更多相关文章
- Android开发教程 - 使用Data Binding(八)使用自定义Interface
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发教程 - 使用Data Binding(一) 介绍
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发教程 - 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发教程 - 使用Data Binding(七)使用BindingAdapter简化图片加载
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发教程 - 使用Data Binding(五)数据绑定
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发教程 - 使用Data Binding(四)在Fragment中的使用
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发教程 - 使用Data Binding(三)在Activity中的使用
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发教程 - 使用Data Binding(二)集成与配置
本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...
- Android开发利器之Data Binding Compiler V2 —— 搭建Android MVVM完全体的基础
原创声明: 该文章为原创文章,未经博主同意严禁转载. 前言: Android常用的架构有:MVC.MVP.MVVM,而MVVM是唯一一个官方提供支持组件的架构,我们可以通过Android lifecy ...
随机推荐
- centos配置备忘(apache\php\mysql)
1. 安装apache\php\mysql=======================================yum -y install httpd php mysql mysql-ser ...
- jsvascript null,undefined,undeclared的区别
1.undefined表示"缺少值",就是此处应该有一个值,但是还没有定义,转为数值时为NaN.典型用法是: (1)变量被声明了,但没有赋值时,就等于undefined. (2) ...
- hadoop web管理界面不能打开问题
centos 7 安装好hadoop的,hadoop和yarn都正常启动,但是yarn的web界面(8088),hdfs的web界面(50070)都不能打开,防火墙是处于关闭状态. 修改默认启动级别, ...
- WEB应用支持RESTFUL风格方法
REST概念 Restful就是一个资源定位及资源操作的风格.不是标准也不是协议,只是一种风格.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. REST风格 资源:互联网所有的事物 ...
- C# Bitmap长宽参数构造的图片对象的每个像素ARGB都是0
var img = new Bitmap(100 , 100); for (int i = 0; i < img.Width; i++) { for (int j = 0; j < i ...
- MFC连接MySQL C API方法
1.首先下载一个32位的MySQL,因为vc的版本是32位了,不用32 位的MySQL会出现无效的机械码错误. MySQL安装地址:https://dev.mysql.com/downloads/my ...
- Ubuntu 默认启动到命令行 12.04
源文链接:http://my.oschina.net/jackguo/blog/85706 代码: sudo gedit /etc/default/grub 引用: GRUB_CMDLINE_LINU ...
- Spring 整合 RocketMQ
1. 引入jar包 <!-- RocketMQ --> <dependency> <groupId>com.alibaba.rocketmq</groupId ...
- 高性能高可用的分布式唯一ID服务——mooon-uniq-id
目录 目录 1 1. 前言 1 2. 名词 1 3. 功能 1 4. 唯一性原理 2 5. 系统结构 2 5.1. mooon-uniq-agent 2 5.2. mooon-uniq-master ...
- Path类对路径字符串的操作
在写程序时,不时会用到处理文件路径的问题,例如:取得扩展名.从路径中取出文件名.路径合并.取出或者去年扩展名等.这些功能都可以通过System.IO.Path类提供的方法来实现.这些相关功能用过多次了 ...