如何在使用ViewModel进行异步调用后更新Reyclerview

时间:2018-01-25 19:59:54

标签: android mvvm retrofit viewmodel android-architecture-components

我使用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());
}

0 个答案:

没有答案