首頁 > Java > java教程 > 主體

如何使用 ListAdapter 在 RecyclerView 中突出顯示搜尋到的文字:為什麼有時會失敗以及如何修復它?

Susan Sarandon
發布: 2024-11-25 12:32:11
原創
549 人瀏覽過

How to Highlight Searched Text in RecyclerView with ListAdapter: Why Does It Sometimes Fail and How Can You Fix It?

使用ListAdapter 在RecyclerView 中突出顯示搜尋文字

在CardView 的RecyclerView 清單上方的工具列中使用搜尋的搜尋文字使用ListAdapter 的CardView 可能會遇到問題。初始的 CardView 和後續的 CardView 可能無法正確突出顯示搜尋文本,或者在滾動列表之前可能不會出現突出顯示。

要解決此問題,重要的是要考慮 ListAdapter 的性質。 ListAdapter 在後台執行緒上更新視圖,因此資料集可能無法立即準備好處理。

在提供的程式碼中,問題源自於 MainActivity 中的過濾方法,特別是行:

submitList(tempList);
登入後複製

此行刪除並取代清單中的現有項目。對於RecyclerView上現有的item,它不會觸發onBindViewHolder,因為item的資料不會改變。因此,要修正此問題,應將 searchString 屬性定義為 Card 模型的一部分。

過濾時,不要修改現有的Card 模型,而是使用更新的搜尋字串建立新的Card 模型:

public void setFilter(List<Card> newSearchList, String adapSearchText) {

    if (newSearchList != null && !newSearchList.isEmpty()) {
        this.searchString = adapSearchText.toLowerCase(Locale.US);
        ArrayList<Card> tempList = new ArrayList<>();
        for (Card card : newSearchList) {
            tempList.add(new Card(card.getTodo(), searchString));
        }
        submitList(tempList);
    }
}
登入後複製

透過使用更新的searchString 建立新的Card 模型,RecyclerView 上的所有項目都會觸​​發onBindViewHolder 方法,確保搜尋正確地反白顯示文字。

以上是如何使用 ListAdapter 在 RecyclerView 中突出顯示搜尋到的文字:為什麼有時會失敗以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板