android - 分页库过滤器/搜索

标签 android search android-paging

我正在使用 Android 分页库,如下所述: https://developer.android.com/topic/libraries/architecture/paging.html

但我也有一个 EditText 用于按名称搜索用户。

如何过滤 Paging 库中的结果以仅显示匹配的用户?

最佳答案

您可以使用 MediatorLiveData 解决此问题。

特别是 Transformations.switchMap .

// original code, improved later
public void reloadTasks() {
    if(liveResults != null) {
        liveResults.removeObserver(this);
    }
    liveResults = getFilteredResults();
    liveResults.observeForever(this);
}

但是如果你想一想,你应该可以不使用 observeForever 来解决这个问题。 ,特别是如果我们认为 switchMap也在做类似的事情。

所以我们需要一个LiveData<SelectedOption>被开关映射到 LiveData<PagedList<T>>我们需要的。

private final MutableLiveData<String> filterText = savedStateHandle.getLiveData("filterText")

private final LiveData<List<T>> data;

public MyViewModel() {
    data = Transformations.switchMap(
            filterText,
            (input) -> { 
                if(input == null || input.equals("")) { 
                    return repository.getData(); 
                } else { 
                    return repository.getFilteredData(input); }
                }
            });
  }

  public LiveData<List<T>> getData() {
      return data;
  }

这样,从一个到另一个的实际更改由 MediatorLiveData 处理。

关于android - 分页库过滤器/搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49192540/

相关文章:

android - 尝试使用 Twitter 登录 Firebase 时出现 NullPointerException

hadoop - 如何配置Cloudera Search以与Impala一起使用?

android - 尝试使用 Paging Library 3 时在 Gradle 中发现重复的类

android - 如何将像素(手机显示宽度)转换为毫秒(ms)?

android - 我可以使用什么设计模式来完成几个步骤的过程?

search - 如何定期删除 Elasticsearch 索引?

python - 使用 Python 在一个 .txt 文件中搜索单词或短语列表(并显示上下文)

android - 为什么 onBindViewHolder 中的 getItem 永远为空?

android - 如何在分页库的PagedList中添加Item

android - 一个空的 SQLite 游标会为 isBeforeFirst、isAfterLast、两者或两者都不返回 true 吗?