Activity使用ViewModel¶
更新日期 2021-6-26
- 2021-6-26 创建文档
这里给出一个Activity使用ViewModel的简单例子。
- 设计ViewModel类
- 设计layout
- 在Activity中将2者关联起来
定义ViewModel¶
新建AnimCollectVm类继承AndroidViewModel。
import android.app.Application;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.MutableLiveData;
public class AnimCollectVm extends AndroidViewModel {
// 其他对象...
public AnimCollectVm(@NonNull Application application) {
super(application);
}
}
设计layout¶
layout文件anim_collect_act.xml
。
最外层用layout
标签。data
标签里放一个AnimCollectVm类型的vm
。
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="vm"
type="com.rustfisher.tutorial2020.animation.collection.AnimCollectVm" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 其他内容 -->
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Activity中使用vm¶
Activity类AnimCollectAct需要继承androidx.appcompat.app.AppCompatActivity
。
使用DataBindingUtil.setContentView
方法来获得AnimCollectActBinding的对象mBinding
。
使用ViewModelProvider的get
方法,生成对应的AnimCollectVm对象mAnimVm
。
然后把mAnimVm
交给mBinding
对象。
public class AnimCollectAct extends AppCompatActivity {
private AnimCollectActBinding mBinding;
private AnimCollectVm mAnimVm;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.anim_collect_act);
mAnimVm = new ViewModelProvider(this).get(AnimCollectVm.class);
mBinding.setVm(mAnimVm);
// 其他代码...
}
}
参考工程 Tutorial2020
作者: rustfisher.com | rf.cs@foxmail.com
示例: AndroidTutorial Gitee, Tutorial Github
本文链接: https://www.an.rustfisher.com/android/jetpack/viewModel/act-use-vm/
一家之言,仅当抛砖引玉。如有错漏,还请指出。如果喜欢本站的内容,还请支持作者。也可点击1次下方的链接(链接内容与本站无关),谢谢支持服务器