【问题标题】:Paging Library Android - Returning no results分页库 Android - 不返回任何结果
【发布时间】:2025-11-27 13:50:01
【问题描述】:

我正在一个项目中工作(使用 Android 的 Room Persistence Library),我想在其中实现 Google 最近推出的 Paging Library。我试图在不使用它的情况下解决这个问题,一切正常,但是当我按照一些教程尝试使用它时,我没有收到任何数据。你们能帮帮我吗?我不知道我做错了什么。

NavigationDao

    @Query("SELECT chapters.number, chapter, verses.verse_number, name, text  FROM verses INNER JOIN chapters ON chapters.chapter = verses.chapters " +
        "INNER JOIN books ON books._id = chapters.books WHERE text LIKE :keywords AND verses.types_of_verse = 1 ORDER BY verses._id")
    DataSource.Factory<Integer, SearchReference> getSearchResultPagedList(String keywords);

存储库

    public DataSource.Factory<Integer, SearchReference> getPagedListSearchResult(String keyword){
    return mNavigationDao.getSearchResultPagedList(keyword);
}

视图模型

    public LiveData<PagedList<SearchReference>> searchReferencePagedList;
    private SearchKeywordRepository mRepository;

    public SearchKeywordViewModel(SearchKeywordRepository repository, final String keyword){
    this.mRepository = repository;

    allSearchReferenceList = new ArrayList<>();

}

        public void init(String keyword)

    searchReferencePagedList = new LivePagedListBuilder<>(mRepository.getPagedListSearchResult(keyword), 20).build();

}

界面片段

    private void observeKeywordQuery(String keywords) {

    mViewModel.init(keywords);

    mViewModel.searchReferencePagedList.observe(this, searchReferenceList -> {
        if (searchReferenceList != null && searchReferenceList.size() > 0) {

            mRecyclerAdapter.submitList(searchReferenceList);

        } else {
            Log.d(LOG_TAG, "No verses retrieved");
        }
    });
}

【问题讨论】:

    标签: java android android-room android-paging


    【解决方案1】:

    经过一番挣扎,我找到了解决办法。这太直截了当,我很惭愧。

    为了调试,我会直接在视图模型中输入字符“deu”。问题是我忘记添加 '%' 符号。因此,在我输入“%deu%”的那一刻,一切正常,并且我得到了预期的所有结果。

    【讨论】: