随笔 - 193, 文章 - 8, 评论 - 58, 阅读 - 26万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

Android Studio 之 DataBing ,不需要再一个个findViewById了

Posted on   孤峰皓月  阅读(1545)  评论(1编辑  收藏  举报

使用DataBinding,不需要再一个个findViewById了

1.在 build.gradel 中 添加下面语句
dataBinding{
enabled true
}


2.在 activity_main.xml 文件中 点小灯炮,自动生成 data 结点

3.在 MainActivity.java 中能得到一个新的类, ActivityMainBinding(此类取Activity名称,这个类不是固定的) ActivityMainBinding binding

4.对 绑定的实例 进行绑定 binding = DataBindingUtil.setContentView(this,R.layout.activity_main);

5.然后在MainActivity.java 文件中,直接用 binding.控件名,进行访问控件,不需要再像之前一样,一个个定义控件变量了,也不需要一个个控件进行 findViewById() 了

6.之前的 setContentView(R.layout.activity_main); 这句方法也不需要写了,直接屏蔽掉

7.在 activity_main.xml 文件中,对控件进行数据回绑
<data>
<variable
name="data"
type="com.example.databinding.MyViewModel" />
</data>
在 <data> 结点中声明 数据变量,
在 textView 或 其他内容控件中,都可以使用 data 这个变量进行数据绑定
如:android:text="@{String.valueOf(data.number)}" 直接把 MyViewModel 中的 number 值绑定到控件上
android:onClick="@{()->data.add()}" 调用 MyViewModel 中的方法

 

1. ViewModel 类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.example.databinding;
 
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
 
public class MyViewModel extends ViewModel {
    private MutableLiveData<Integer> number;
    public MutableLiveData<Integer> getNumber(){
        if(number==null)
        {
            number = new MutableLiveData<>();
            number.setValue(0);
        }
        return number;
    }
 
    public void add(){
        number.setValue(number.getValue()+1);
    }
}

  

2.MainActivity 类

  

努力加载评论中...
点击右上角即可分享
微信分享提示