我正在尝试学习视图模型并在我的应用中实现它们。我一直在遵循入门指南,但是我有两个问题。
我如何收听按钮点击?由于所有业务逻辑都应该存储在视图模型中,因此我可以在其中放置OnClick侦听器吗?还是在启动该片段的活动中将其与我的onChange
方法放在一起?
如何告诉片段使用视图模型?
Update正在查看此人教程Location of click event in MVVM architecture。 mvvm的目的不是要消除接口的需求吗?
更新2:找到了可以在此处使用数据绑定将OnClick侦听器推入按钮的位置:Handle onClick event with Databinding and MVVM和Using DataBinding library for binding events
实时数据观察活动启动片段中的代码
//private BattleRhythmViewModel battleModel;
battleModel = ViewModelProviders.of(this).get(BattleRhythmViewModel.class);
battleModel.getEvents().observe(this, new Observer<ArrayList<Event>>() {
@Override
public void onChanged(@Nullable ArrayList<Event> events) {
// Add newly created events to array/recycler view
// Another one for pushing new platform/content to database
}
});
}
查看片段的模型
公共类BattleRhythmViewModel扩展了ViewModel {
private MutableLiveData<ArrayList<Event>> battleRhythmEvents;
private MutableLiveData<ArrayList<TableData>> battleRhythmExtra;
public LiveData<ArrayList<Event>> getEvents()
{
return battleRhythmEvents;
}
public LiveData<ArrayList<TableData>> getExtras()
{
return battleRhythmExtra;
}
}