我使用Android架构组件(LiveData + ViewModel,MVVM)。我有一个项目列表作为新闻源,我代表在recyclerview上。用户可以喜欢此Feed上的项目,然后在改进成功后,应该更新此特定项目(喜欢和视图点击的数量是可观察的字段)。
这样做的最佳做法是什么?我的Recyclerview有一个单独的ViewModel然后是相应的Fragment(因为Fragment-ViewModel中的Dagger-Injections)。当用户点击ratingBar时,我的片段中有一个监听器。我应该将来自recycler-adapter的Object +可观察字段通过侦听器发送到片段,并观察liveData-Variable以获取更新以更新Recyclerview-Adapter,还是有另一种方法吗?
我现在的做法:
Recyclerview:
getBinding().ratebarUservote.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float v, boolean fromUser) {
if(fromUser) {
mListener.onRatingBarChange(tutorialsResponse, items.get(position).getId(), v, viewModel.clicksObservable, viewModel.likesObservable);
}
}
});
片段:
@Override
public void onRatingBarChange(News tutorial, String tutId, float value, bservableField<Integer> clicksObservable, ObservableField<Integer> likesObservable) {
viewModel.likeTutorial(tutorial, tutId, value, clicksObservable, likesObservable);
viewModel.getTutorialChangedLiveData().observe(this, tutChanged -> mAdapter.notifyDataSetChanged());
}