在Android中,我们可以使用ViewModel和LiveData来实现MVVM架构中View与Model的通信机制。下面是一个示例:
public class CustomViewModel extends ViewModel {
private MutableLiveData text;
public LiveData getText() {
if (text == null) {
text = new MutableLiveData();
loadText();
}
return text;
}
private void loadText() {
// 在这里加载数据
text.setValue("这里是自定义视图的数据");
}
}
public class CustomView extends View {
private CustomViewModel viewModel;
private String text;
public CustomView(Context context, AttributeSet attrs) {
super(context);
viewModel = ViewModelProviders.of((FragmentActivity) context).get(CustomViewModel.class);
viewModel.getText().observe((LifecycleOwner) context, new Observer() {
@Override
public void onChanged(@Nullable String s) {
text = s;
invalidate();
}
});
}
// 在这里绘制视图
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText(text, 0, 0, new Paint());
}
}
这样就可以实现自定义视图的数据管理了。当数据变化时,ViewModel会通知CustomView,CustomView会自动更新自己的视图。