RecyclerView 및 ListAdapter를 사용하여 ForegroundColorSpan 검색 텍스트 강조 표시 수정
문제
검색 텍스트 강조 표시 ForegroundColorSpan을 사용하는 Color.GREEN은 ListAdapter를 사용하는 RecyclerView 내에서 일관성이 없습니다. 목록의 일부 항목은 강조 표시되지 않거나 스크롤 후에만 강조 표시됩니다.
원인
ListAdapter는 비동기 업데이트를 사용하며 onBindViewHolder() 시 데이터 세트가 준비되지 않을 수 있습니다. 호출됩니다. 결과적으로 searchString을 사용하여 강조 표시를 올바르게 적용할 수 없습니다.
해결 방법
searchString 속성을 포함하도록 카드 모델을 업데이트하세요. 필터링하는 동안 업데이트된 searchString을 사용하여 새 카드 인스턴스를 만듭니다. 그러면 onBindViewHolder() 메서드가 실행되고 강조 표시가 올바르게 적용됩니다.
// In MainActivity private void filter(String searchText) { ArrayList<Card> searchList = new ArrayList<>(); for (Card cardItem : mCards) { if (cardItem.getTodo().toLowerCase().contains(searchText.toLowerCase(Locale.US))) { searchList.add(new Card(cardItem.getTodo(), searchText)); // Create a new Card with updated searchString } } if (!searchList.isEmpty()) { adapter.submitList(searchList); // Submit the new Card list } }
// In CardRVAdapter public void setFilter(List<Card> newSearchList, String adapSearchText) { if (newSearchList != null && !newSearchList.isEmpty()) { ArrayList<Card> tempList = new ArrayList<>(newSearchList); submitList(tempList); } }
위 내용은 ListAdapter를 사용하는 RecyclerView에서 ForegroundColorSpan 검색 텍스트 강조 표시가 일관되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!