欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android Jetpack -- DataBinding篇 #Android学习笔记

程序员文章站 2022-06-11 08:58:21
...

1、创建新的项目文件
项目文件名为DataBinding
2、界面及功能
Android Jetpack -- DataBinding篇 #Android学习笔记
功能:按BUTTON按钮后,TextView中的值会加1,且APP后台运行或翻转屏幕时,TextView中的数值保持不变
3、strings.xml文件内容

<resources>
    <string name="app_name">DataBinding</string>
    <string name="textview">TextView</string>
    <string name="button">Button</string>
</resources>

4、添加新的类
在java文件下的com.example.DataBinding文件下新建Java类MyViewModel
Android Jetpack -- DataBinding篇 #Android学习笔记
5、MyViewModel类的内容

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);
    }
}

6、打开Gradle Scripts文件下的build.gradle(Module:app)文件
Android Jetpack -- DataBinding篇 #Android学习笔记
在defaultConfig { }的最后一行,即testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"后添加

dataBinding{
            enabled = true
        }

Android Jetpack -- DataBinding篇 #Android学习笔记7、MainActivity.java文件内容
在public class MainActivity extends AppCompatActivity后第一行添加

MyViewModel myViewModel;

如图所示
Android Jetpack -- DataBinding篇 #Android学习笔记
8、打开activity_main_.xml文件的Code形式(在界面右上角)
打开后,在第一行代码处右键,“显示可用操作”,然后有一个黄色小灯泡出现,点第一个选项
Android Jetpack -- DataBinding篇 #Android学习笔记
然后文件会变成如下内容
Android Jetpack -- DataBinding篇 #Android学习笔记
在data之间添加如下代码

 <data>
       <variable
           name="data"
           type="com.example.DataBinding.MyViewModel" />
 </data>

9、MainActivity.java文件内容

public class MainActivity extends AppCompatActivity {
    MyViewModel myViewModel;
    ActivityMainBinding binding;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
        binding.setData(myViewModel);
        binding.setLifecycleOwner(this);
    }
}

注意:如果myViewModel = new ViewModelProvider(this).get(MyViewModel.class);中的this报错,则修改build.gradle(Module:app)中的implementation ‘androidx.lifecycle:lifecycle-extensions:2.1.0’,把2.1.0改为2.2.0,即
修改

implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'

变为

implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

10、打开activity_main.xml的代码
下方TextView中的android:text="内容"修改为

android:text="@{String.valueOf(data.number)}"

Android Jetpack -- DataBinding篇 #Android学习笔记
Button中添加一行代码

android:onClick="@{()->data.add()}"

Android Jetpack -- DataBinding篇 #Android学习笔记

11、至此,项目可正常运行
Android Jetpack -- DataBinding篇 #Android学习笔记Android Jetpack -- DataBinding篇 #Android学习笔记