ホームページ >Java >&#&チュートリアル >ListAdapter を使用して RecyclerView で正確な検索テキストを強調表示する方法
ListAdapter を使用した RecyclerView での検索テキストの強調表示の修正
ListAdapter を利用した RecyclerView で SearchView を使用する場合、検索を適切に強調表示することが重要です結果。ただし、リスト内の最初の CardView またはその下にある他の 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 中国語 Web サイトの他の関連記事を参照してください。