Android MVVM系列:LiveData的简单使用java版
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android MVVM系列:LiveData的简单使用java版相关的知识,希望对你有一定的参考价值。
上一篇:Android MVVM系列:DataBinding简单示例java版,我们体验了DataBinding,这一篇继续了解MVVM中的ViewModel的具体实现,了解ViewModel要先了解一个重要组件:LiveData。
目录
关于ViewModel官网怎么说?
https://developer.android.google.cn/topic/libraries/architecture/viewmodel?hl=zh_cn
从下图官网给出的代码示例,可以看出了解ViewModel必须先弄懂LiveData。
官网怎么描述LiveData的?
https://developer.android.google.cn/topic/libraries/architecture/livedata?hl=zh_cn
LiveData需要手动导入依赖吗?
我用的android studio BumbleBee 2021.1.1版本,默认已经导入了lifecycle-livedata和viewmodel, 不需要手动导入。
LiveData具体怎么用?
直接贴代码吧,看代码注释就明白了。
MainActivity.java,布局代码自己写哈!
public class MainActivity extends AppCompatActivity
private NameViewModel model;
private TextView nameTextView;
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameTextView = findViewById(R.id.tv_name);
//实例化model对象
model = new ViewModelProvider(this).get(NameViewModel.class);
//实例化观察者
final Observer<String> nameObserver = new Observer<String>()
@Override
public void onChanged(@Nullable final String newName)
nameTextView.setText(newName);
;
//绑定观察者
model.getCurrentName().observe(this, nameObserver);
public void changeName(View view)
count++;
//通过ViewModel来更新UI, 在主线程用setValue,在其他线程用postValue
model.getCurrentName().setValue("火星" + count + "号");
NameViewModel.java代码:
public class NameViewModel extends ViewModel
private MutableLiveData<String> currentName;
public MutableLiveData<String> getCurrentName()
if (currentName == null)
currentName = new MutableLiveData<String>();
return currentName;
看下运行后点击按钮的效果:
以上是关于Android MVVM系列:LiveData的简单使用java版的主要内容,如果未能解决你的问题,请参考以下文章
Android MVVM框架搭建ViewModel + LiveData + DataBinding
抽象 ViewModel 不更新 LiveData Android MVVM
Android MVVM-编程思想2(入门实战MVVM,DataBinding,ViewModel,LiveData)