使用ListAdapter 修正RecyclerView 中的搜尋文字突出顯示
當將View 與由ListAdapter 提供支援的RecyclerView 一起使用時,正確突出顯示搜尋至關重要結果。但是,會出現一個常見問題,即清單中的第一個 CardView 或下面的其他視圖可能不會突出顯示搜尋文本,或突出顯示不一致。
此行為的原因在於 ListAdapter 用於更新視圖的後台線程,可能會導致資料集在初始渲染期間不可用。要解決此問題,請考慮採取以下措施:
範例程式碼
// In the ListAdapter public class CardRVAdapter extends ListAdapter<Card, CardRVAdapter.ViewHolder> { private String searchString = ""; public void setFilter(List<Card> newSearchList, String searchText) { if (newSearchList != null && !newSearchList.isEmpty()) { this.searchString = searchText; List<Card> filteredList = new ArrayList<>(); for (Card card : newSearchList) { Card newCard = new Card(card); newCard.setSearchString(searchText); filteredList.add(newCard); } submitList(filteredList); } } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { final Card card = getCardAt(position); if (card != null) { holder.bindData(card, position); } } } // In the Card model public class Card { private String searchString; public Card(String todo, String searchString) { // Constructor with both original todo and search string } public String getSearchString() { return searchString; } public void setSearchString(String searchString) { this.searchString = searchString; } }
透過實作這些更改,無論捲動還是初始渲染,您都可以使用ListAdapter 精確地突出顯示RecyclerView 中的搜尋文字.
以上是如何使用ListAdapter保證RecyclerView中準確的搜尋文字高亮?的詳細內容。更多資訊請關注PHP中文網其他相關文章!