android - 如何从 PagedListAdapter 刷新 RecyclerView 中的数据?
问题描述
RecyclerView
使用以下代码行,我可以在using中显示来自后端服务器的数据PagedListAdapter
。
movieViewModel = ViewModelProviders.of(this).get(MovieViewModel.class);
MovieAdapter adapter = new MovieAdapter(this);
movieViewModel.moviePagedList.observe(this, adapter::submitList);
recyclerView.setAdapter(adapter);
我创建了这个方法:
private void movieSearch(String searchText) {
globalSearch = searchText;
movieViewModel.replaceSubscription(this);
movieViewModel = ViewModelProviders.of(this).get(MovieViewModel.class);
MovieAdapter adapter = new MovieAdapter(this);
movieViewModel.moviePagedList.observe(this, adapter::submitList);
recyclerView.setAdapter(adapter);
}
从内部调用它onQueryTextChange()
以显示搜索结果,但由于某些原因,我的数据RecyclerView
没有刷新。
这也是我的MovieViewModel
课:
public class MovieViewModel extends ViewModel {
LiveData<PagedList<ApiResponse.Movie>> moviePagedList;
public MovieViewModel() {
MovieDataSourceFactory movieDataSourceFactory = new MovieDataSourceFactory(search);
PagedList.Config config = new PagedList.Config.Builder().setEnablePlaceholders(false).setPageSize(20).build();
moviePagedList = new LivePagedListBuilder<>(movieDataSourceFactory, config).build();
}
void replaceSubscription(LifecycleOwner lifecycleOwner) {
moviePagedList.removeObservers(lifecycleOwner);
}
}
我每次搜索某些东西时,都需要获取新鲜数据。如何解决这个问题?
解决方案
这个问题可以通过调用来解决
movieViewModel.moviePagedList.dataSource.invalidate()
在您的活动/片段中。
推荐阅读
- javascript - 如何使用 chart.js 偏移 x 和 y 轴网格点和标签?
- python - 如何删除“baca”或从 html 中读取?
- javascript - 返回一个空数组而不是 null
- canvas - 在带有画布的框架中使用 grid.columnconfigure
- javascript - 在单独的文件中指定路线时无法找到路线
- c# - AzureServiceTokenProvider 异常:尝试使用托管服务标识获取令牌。发送请求时出错
- google-sheets - 将 2 列转换为 1 行,Google 表格
- sql - 如果另一个表中某个列中的任何值包含相同的“字符串”,则需要添加包含“字符串”的列
- kubernetes - 什么是速率 node_context_switches_total 以及为什么 rate(node_context_switches_total[5m]) > 1000?
- python - 爬取 ID 并获取 TypeError:列表索引必须是整数或切片,而不是 str