ListAdapter를 사용하여 RecyclerView에서 검색 텍스트 강조 표시 수정
ListAdapter로 구동되는 RecyclerView와 함께 SearchView를 사용할 때 검색을 적절하게 강조 표시하는 것이 중요합니다. 결과. 그러나 목록의 첫 번째 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!