android mvvm典型demo
时间: 2023-09-11 11:03:46 浏览: 90
以下是一个简单的Android MVVM模式的典型Demo:
1. Model层
```java
public class User {
private String name;
private String email;
public User(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
}
```
2. ViewModel层
```java
public class UserViewModel extends ViewModel {
private MutableLiveData<User> userLiveData;
public LiveData<User> getUserLiveData() {
if (userLiveData == null) {
userLiveData = new MutableLiveData<>();
}
return userLiveData;
}
public void setUser(User user) {
userLiveData.setValue(user);
}
}
```
3. View层
```java
public class MainActivity extends AppCompatActivity {
private TextView tvName;
private TextView tvEmail;
private Button btnUpdate;
private UserViewModel userViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvName = findViewById(R.id.tv_name);
tvEmail = findViewById(R.id.tv_email);
btnUpdate = findViewById(R.id.btn_update);
userViewModel = new ViewModelProvider(this).get(UserViewModel.class);
userViewModel.getUserLiveData().observe(this, new Observer<User>() {
@Override
public void onChanged(User user) {
tvName.setText(user.getName());
tvEmail.setText(user.getEmail());
}
});
btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
User user = new User("张三", "zhangsan@example.com");
userViewModel.setUser(user);
}
});
}
}
```
在这个Demo中,Model层是一个简单的User类,ViewModel层是一个UserViewModel类,View层是一个MainActivity类。
UserViewModel类中包含一个MutableLiveData类型的userLiveData成员变量,它用于存储用户数据。getUserLiveData方法返回userLiveData的LiveData类型,这样View层就可以观察这个LiveData,并在数据发生变化时更新UI。
View层中,MainActivity通过ViewModelProvider获取UserViewModel实例,并观察getUserLiveData返回的LiveData类型。当用户数据发生变化时,onChanged方法被调用,并更新UI。在按钮的点击事件中,MainActivity通过setUser方法更新UserViewModel中的用户数据。
这个Demo展示了MVVM模式的基本思想:将数据和UI解耦,并使用ViewModel作为中间层,实现数据的观察和更新。
阅读全文