Android Jetpack -- DataBinding篇 #Android学习笔记
1、创建新的项目文件
项目文件名为DataBinding
2、界面及功能
功能:按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
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)文件
在defaultConfig { }的最后一行,即testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"后添加
dataBinding{
enabled = true
}
7、MainActivity.java文件内容
在public class MainActivity extends AppCompatActivity后第一行添加
MyViewModel myViewModel;
如图所示
8、打开activity_main_.xml文件的Code形式(在界面右上角)
打开后,在第一行代码处右键,“显示可用操作”,然后有一个黄色小灯泡出现,点第一个选项
然后文件会变成如下内容
在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)}"
Button中添加一行代码
android:onClick="@{()->data.add()}"
11、至此,项目可正常运行
推荐阅读
-
Flutter学习笔记(30)--Android原生与Flutter混编
-
Android学习笔记之ActionBar Item用法分析
-
Android学习笔记--使用剪切板在Activity中传值示例代码
-
Android学习笔记--通过Application传递数据代码示例
-
Android学习笔记--Activity中使用Intent传值示例代码
-
Android学习笔记(一)环境安装及第一个hello world
-
Android学习笔记之——UI组件/RelativeLayout(相对布局)
-
Android学习笔记(二)App工程文件分析
-
Android软件开发学习笔记—Intent数据传递
-
Android的activity学习笔记