# DataBinding **Repository Path**: mirrors_bluesky51/DataBinding ## Basic Information - **Project Name**: DataBinding - **Description**: DataBinding的基本使用以及结合本地和网络数据进行数据绑定(DataBinding+Retrofit+ListView/RecyclerView) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2026-03-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataBinding DataBinding的基本使用以及结合本地和网络数据进行数据绑定(DataBinding+Retrofit+ListView/RecyclerView) DataBinding优势: 1.不用findViewById() 2.将数据分解到各个view 3.在UI线程上更新数据 4.监控数据的变化,实时更新 1.配置: 打开Module下的build.gradle文件,在android标签中添加如下话语: dataBinding{ enabled true//表示启动dateBinding功能 } 2.入门用法: 1》布局文件以layout为根标签,基本结构如下: 《1》单个对象传递: 例如: 给控件赋值引用值:@{对象名.变量名} 《2》多个对象使用集合传递: 例如: xml文件中< >符合需要转义字符,转义的字符后续具体说明 备注: /** *以下是XML中需要的转义字符:[/size] * &(逻辑与) & * <(小于) < * >(大于) > * "(双引号) " * '(单引号) ' [/size] */ 《3》ListView或者GridView的data模型示例如下: ListView在布局中写法如下: RecyclerView的data模型示例如下 RecyclerView在布局中写法如下: 完整结构示意如下: type="...."> 《4》单个控件的点击事件setOnClickListener/setOnLongClickListener如下说明: 指定对象的点击方法在对于的实体类中声明,其中参数和返回值需和指定的监听事件类型一致; 在xml指定控件的调用如: android:onClick="@{对象名.方法名}" android:onLongClick="{对象名.方法名}" 2》java代码中布局加载改为: DataBindingUtil调用setContentView加载布局返回视图数据绑定的对象 ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main); activityMainBinding.set对象(List集合或者单个对象); 备注:ActivityMainBinding是ViewDataBinding类的子类,该对象持有Activity要展示的数据和布局中的各个view的引用 3》加载网络图片: 思路:由于图片设置的内容都是drawable类型,但网络图片是一个字符串地址, 所以布局文件中使用自定义属性设置,具体操作如下: 1.书写加载图片的工具类,具体如下: 备注:ImageView已经和model的url绑定了,比如说:请求接口时,当请求完成时,拿到所需的图片url,通过model.setXX("图片地址"),这时ImageView上的图片就会自动变化。 @BindingAdapter({"imageUrl"}) public static void loadImage(ImageView imageView,String url){ if (url==null){ imageView.setImageResource(R.mipmap.ic_launcher); }else{ Glide.with(imageView.getContext()).load(url) .placeholder(R.mipmap.ic_launcher) .into(imageView); } } BindingAdapter的含义: 1、它是一个注解关键词; 2、他是用来标记的方法的; 3、它的功能是用来设置view的属性值。它修饰的方法必须用public static 修饰 4》加载网络数据完成ListView效果: 具体看CommnAdapter:设置数据viewDataBinding的实现类setAdapter 5》加载网络数据完成RecyclerView效果: 具体看RecyclerCommonAdapter:设置数据viewDataBinding的实现类setAdapter