在自己写的几个项目中,mvvm相比其他(mvc,mvp)框架,个人觉得对于前期编码,以及后期的迭代开发,维护都是比较方便的。将原本繁琐的逻辑处理功能交给了viewmodel层来实现,通过model层可以使用databinding实现页面数据的绑定,findviewById一去不复返了,而且对于点击onclick事件,onCheckedchange等事件不用去实现相关listener相关接口,直接通过布局绑定实现。
MainViewModel
public class MainViewModel {
private ActivityMainBinding activityMainBinding;
private BaseActivity baseActivity;
private String[] authType={"密码","人脸"};
public MainViewModel(ActivityMainBinding activityMainBinding, BaseActivity baseActivity) {
this.activityMainBinding = activityMainBinding;
this.baseActivity = baseActivity;
activityMainBinding.setMainViewModel(this);
activityMainBinding.tvCurrentuser.setText(AppManager.getInstance().getUserModel().userName);
}
public void onDestroy() {
}
public void finish(View view){
baseActivity.finish();
}
public void intentUserManage(View view){
// chooseCheckType(4);
Intent intent=new Intent(baseActivity, UserManageActivity.class);
baseActivity.startActivity(intent);
}
public void intentRecord(View view){
Intent intent=new Intent(baseActivity, RecordActivity.class);
baseActivity.startActivity(intent);
}
public void intentDeviceManage(View view){
Intent intent=new Intent(baseActivity, DeviceManageActivity.class);
baseActivity.startActivity(intent);
}
public void intentSetting(View view){
Intent intent=new Intent(baseActivity, SettingActivity.class);
baseActivity.startActivity(intent);
}
public void intentAllAuth(View view){
Intent intent=new Intent(baseActivity, AllAuthActivity.class);
baseActivity.startActivity(intent);
}
public void intentPartAuth(View view){
Intent intent=new Intent(baseActivity, PartAuthActivity.class);
baseActivity.startActivity(intent);
}
private void chooseCheckType(int flag){
AlertDialog.Builder builder=new AlertDialog.Builder(baseActivity);
builder.setTitle("选择验证方式")
.setItems(authType, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case 0:
Intent intent=new Intent(baseActivity, LoginByPwdActivity.class);
intent.putExtra("flag",flag);
baseActivity.startActivity(intent);
break;
case 1:
Intent intent1=new Intent(baseActivity, VerifyActivity.class);
intent1.putExtra("flag",flag);
baseActivity.startActivity(intent1);
break;
}
}
});
builder.show();
}
public void receiveEvent() {
}
}
MainActivity
public class MainActivity extends BaseActivity {
private ActivityMainBinding activityMainBinding;
private MainViewModel mainViewModel;
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityMainBinding= DataBindingUtil.setContentView(this, R.layout.activity_main);
mainViewModel=new MainViewModel(activityMainBinding,this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mainViewModel.onDestroy();
}
@Override
protected void receiveEvent(MessageEvent event) {
super.receiveEvent(event);
mainViewModel.receiveEvent();
}
}
版权声明:本文为zhaoxiaoyu0822原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。