[Android][Jetpack] LiveData的基本使用

LiveData是什么

LiveData是一种可观察的数据存储器类,具有生命周期的感知能力。

简单使用

LiveData一般都是和ViewModel一起使用。定义一个类继承自ViewModel:

public class LiveDataSub extends ViewModel {

    private MutableLiveData<String> infos;

    private int number;

    public MutableLiveData<String> getInfo() {
        if (infos == null) {
            infos = new MutableLiveData<>();
        }
        return infos;
    }

    public int increaseNumber() {
        number++;
        return number;
    }
}

在这个类里定义MutableLiveData类型的属性,并提供外界访问的方法getInfo

在Activity中使用

public class LiveDataActivity extends AppCompatActivity {

    private TextView tv;

    private LiveDataSub viewModel;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_livedata);
        tv = findViewById(R.id.tv);
        viewModel = ViewModelProviders.of(this).get(LiveDataSub.class);
        viewModel.getInfo().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String s) {
                tv.setText(s);
            }
        });
    }

    public void update(View view) {
        String info = "info:" + viewModel.increaseNumber();
        viewModel.getInfo().setValue(info);
    }
}

通过ViewModelProviders.of(this).get(LiveDataSub.class)来实例化刚才定义的ViewModel,然后通过调用LiveDataobserve方法添加对当前Activity的观察。

通过LiveData的setValue可以来更新数据,此时界面会自动更新。

猜你喜欢

转载自blog.csdn.net/xfb1989/article/details/110873278