【发布时间】:2024-04-12 12:40:02
【问题描述】:
我有以下 ViewModel:
public class FeedViewModel extends ViewModel {
private final FeedRepository repository;
private LiveData<Resource<List<Photo>>> feed;
@Inject
FeedViewModel(@NonNull final FeedRepository repository) {
this.repository = repository;
}
LiveData<Resource<List<Photo>>> getUserFeed() {
if (feed == null) {
feed = new MutableLiveData<>();
feed = repository.get();
}
return feed;
}
}
我以这种方式在 Fragment 中观察 feed:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel.getUserFeed().observe(this, feed -> {
switch (feed.status) {
case ERROR:
processErrorState(feed.data);
break;
case LOADING:
processLoadingState(feed.data);
break;
case SUCCESS:
if (feed.data != null)
processSuccessState(feed.data);
break;
}
});
}
问题是:如何以正确的方式刷新 feed?假设用户触发了 swipeToRefresh,那么该事件必须创建一个 feed 的刷新任务。我该如何实现?
【问题讨论】:
-
如果你有答案,可以提供答案吗?
标签: android mvvm refresh viewmodel android-architecture-components