当前位置: 首页 > article >正文

android studio使用DataBinding

DataBinding 是谷歌官方发布的在android上对MVVM设计模式的一个实现框架,其作用是实现数据绑定。
Android DataBinding主要实现了View和ViewModel的双向绑定,包括用户的响应。并且实现了自动更新。
    
DataBinding优点:
     1.大量减少Activity内的代码。
     2.数据能够单向或者双向绑定到布局文件当中,这样有助于防止内存泄露,
        而且能够自动进行空检测以避免空指针异常
 

在你的module中的build.gradle文件中添加dataBinding配置

(添加完成后要编译一下)

    android {
               ......
             dataBinding {
                   enabled = true
             }
     }  
 

设置布局(这里以 activity_mail.xml 为例)

<data>:这个元素定义了布局文件中可以使用的数据源。
<variable:这个元素定义了一个变量,它可以在布局文件中被引用。
name="idol":这是变量的名称,在布局文件中可以通过这个名称来引用变量。
type="com.example.databinding.Idol":这是变量的类型,它指定了变量的数据类型。在这个例子中,Idol是一个Java类,它可能定义了一些属性,名字、等级,这些属性可以在布局文件中被绑定到UI组件上。

MainActivity中的写法
 public class MainActivity extends AppCompatActivity{

        @Override
        protectedvoidonCreate(BundlesavedInstanceState){
            super.onCreate(savedInstanceState);
            //默认情况下,绑定类的名称是基于布局文件的名称生成的,
            //它是将布局文件名开头大写并加上“Binding”而成。
            //这个类拥有所有从属性(例如用户变量)到布局的绑定关系并知道如何赋值绑定表达式。
            //最简单的方法创建绑定的方法就是通过反射。
            ActivityMainBinding binding = 
                        DataBindingUtil.setContentView(this,R.layout.activity_main);

            UserBean user = new UserBean("苏青岩","https://blog.csdn.net/qq_35953420");
            //绑定数据
            binding.setData(user);
            //修改idtextView1的控件的内容
            //binding.textView1.setText("苏青岩大帅哥");

        }
    }
Fragment中使用部分代码

public class Frag extends Fragment {
    
    private ViewDataBinding binding;

    @Override
    public View onCreateView(LayoutInflater inf, ViewGroup container, Bundle state) {
        binding = DataBindingUtil.inflate(inf, R.layout.frag, container, false);
        return binding.getRoot();
    }
}


http://www.kler.cn/a/488201.html

相关文章:

  • 透明部署、旁路逻辑串联的区别
  • LabVIEW软件Bug的定义与修改
  • 爬虫学习记录
  • python学习笔记—14—函数
  • 优化提示词改善答疑机器人回答质量
  • 【gRPC】Keepalive连接保活配置,go案例
  • Unity使用Vuforia插件进行AR开发
  • Django REST framework 源码剖析-视图集详解(ViewSet)
  • 使用Logstash 将Mysql的数据导入ElasticSearch中
  • (超详细)Maven安装配置、以及在IDEA中创建Maven项目
  • LeetCode 2765. 最长交替子数组解析与解题思路
  • 机器学习之过拟合(算法参数,超参数) 欠拟合(模型参数)
  • 简单的spring boot tomcat版本升级
  • 解决Qt打印中文字符出现乱码
  • plane开源的自托管项目
  • 《Spring Framework实战》13:4.1.4.4.延迟初始化Bean
  • qml Column详解
  • 0109鹅厂面经
  • 媒体资源生产转码过程
  • Formality:默认配置文件
  • 国产信创实践(国能磐石服务器操作系统CEOS +东方通TongHttpServer)
  • 【海南省】乡镇界arcgis格式shp数据乡镇名称和编码gis矢量数据
  • 设TCP的门限值的初始值为10个报文段,当拥塞窗口上升到24时网络发生了超时,TCP使用慢开始和拥塞避免后第一轮的拥塞窗口大小是,门限值为
  • pytorch torch.clamp函数介绍
  • 在职研生活学习--20250108~开题报告随想
  • 深入浅出C#线程池ThreadPool:提升程序性能的利器