返回
ViewModel,Jetpack之界面数据存储组件
Android
2023-11-13 01:45:50
Jetpack ViewModel是一个轻量级的UI组件,它与Android生命周期感知,这意味着它可以在UI生命周期的不同阶段生存。ViewModel通常用于存储与UI相关的数据,例如表单输入、列表项或网络请求的结果。
ViewModel有几个优点:
- 它可以是Fragment共享数据的桥梁。
- 它可以是屏幕方向切换时的数据来源。
- 它是MVVM架构的数据提供者。
- 使用LiveData可以使其变成可观察的数据。
如何使用ViewModel?
- 在你的项目中添加Jetpack库。
- 在你的活动或片段中创建一个ViewModel类。
- 在你的布局文件中使用ViewModel。
- 在你的代码中更新ViewModel的数据。
- 在你的布局文件中观察ViewModel的数据。
ViewModel的例子
以下是一个使用ViewModel存储表单输入的例子:
public class MyViewModel extends ViewModel {
private MutableLiveData<String> firstName = new MutableLiveData<>();
private MutableLiveData<String> lastName = new MutableLiveData<>();
public void setFirstName(String firstName) {
this.firstName.setValue(firstName);
}
public void setLastName(String lastName) {
this.lastName.setValue(lastName);
}
public LiveData<String> getFirstName() {
return firstName;
}
public LiveData<String> getLastName() {
return lastName;
}
}
在你的活动或片段中,你可以这样使用ViewModel:
public class MyActivity extends AppCompatActivity {
private MyViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
viewModel.getFirstName().observe(this, new Observer<String>() {
@Override
public void onChanged(String firstName) {
// 更新UI
}
});
viewModel.getLastName().observe(this, new Observer<String>() {
@Override
public void onChanged(String lastName) {
// 更新UI
}
});
}
}
在你的布局文件中,你可以这样使用ViewModel:
<EditText
android:id="@+id/firstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{viewModel.firstName}" />
<EditText
android:id="@+id/lastName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{viewModel.lastName}" />
这种技术可以帮助你创建更模块化、更易于测试的Android应用程序。