ViewModel简单使用 java版

添加依赖
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.2.0'
ViewModel 的一个重要作用就是帮助Activity分担一部分工作,只要是界面上能看到的数据,它的相关变量都应该存放在ViewModel中。

1、创建MyViewModel继承ViewModel

public class myViewModel extends ViewModel {
    protected int a=0;
    public myViewModel(int a){
        this.a=a;
    }

}

2、活动里获得ViewModel对象

{
myViewModel viewModel;
TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         viewModel= new ViewModelProvider(this,new VmFactory(55)).get(myViewModel.class);//若需要传参数使用这个同
         //时实现ViewModelProvider.Factory
         // viewModel= new ViewModelProvider(this).get(myViewModel.class);//不需传参,使用无参构造函数
         //不能直接创建ViewModel的实例,不然每次活动oncreate()都会创建一个实例,无法保留其中数据
        Button btn=(Button)findViewById(R.id.btn);
        textView=(TextView)findViewById(R.id.text);
        btn.setOnClickListener(MainActivity.this);

    }
    public void onClick(View view){
        switch (view.getId()){
            case R.id.btn:
                viewModel.a++;
              textView.setText(viewModel.a+"");
        }
    }
}

3、若传参,实现ViewModelProvider.Factory接口

public class VmFactory implements ViewModelProvider.Factory {
    private int a;
    public VmFactory(int a){
        this.a=a;
    }
    @NonNull
    @Override
    public  T create(@NonNull Class modelClass) {
        return (T)new myViewModel(a) ;
    }
}

你可能感兴趣的:(android)