android - 具有来自过滤器的可变内容的 PageList 不会刷新
问题描述
我必须通过传输过滤器参数MinAge
和类MaxAge
来过滤 PageList 内容ItemDataSource
:
public class ItemDataSource extends PageKeyedDataSource<Integer, Item> {
@Override
public void loadInitial(@NonNull LoadInitialParams<Integer> params, @NonNull final LoadInitialCallback<Integer, Item> callback) {
loadData(Util.getMinAge, Util.getMaxAge);
}
// and so on in loadBefore and loadAfter methods
}
这是刷新方法:
public void refresh() {
RecyclerView recyclerView = findViewById(R.id.list);
ItemViewModel itemViewModel = ViewModelProviders.of(MainActivity.this)
.get(ItemViewModel.class);
final ItemAdapter adapter = new ItemAdapter(MainActivity.this);
itemViewModel.itemPagedList.observe(MainActivity.this,
new Observer<PagedList<Item>>() {
@Override
public void onChanged(@Nullable PagedList<Item> items) {
adapter.submitList(items);
}
});
recyclerView.setAdapter(adapter);
}
但是此方法不会重新创建ItemDataSource
包含新过滤器参数的方法,因此我会刷新列表但使用旧参数。
我该如何解决这个问题?
解决方案
推荐阅读
- php - 试图在 php 中取消设置数组,但无法弄清楚如何
- python - 差异 spacy 的“--base-model”和“--vectors”参数用于为 NER 使用自定义嵌入?
- algorithm - 分组到最少数量的投注单
- ios - 在 iOS 上保护应用程序的沙箱以避免复制其内容
- ansible - Ansible 在集合中找不到过滤器
- spring-boot - 执行器刷新为 springboot 2.2.7 提供 404 错误
- python - 如何摆脱在 Visual Studio 代码终端中打印的不必要路径?
- java - JPA - 写一个“反向”,如谓词(如应用于列而不是 inparam 的运算符) - Oracle DBMS
- database - 在 Windows 10 上安装 Informatica Server 9.6 时出现数据库连接错误
- c# - 在 Azure App Service for ASP NET App 中,我可以使用什么作为静态引用来指示是在生产环境中还是在开发环境中?