>Java >java지도 시간 >ListAdapter를 사용하는 RecyclerView에서 ForegroundColorSpan 검색 텍스트 강조 표시가 일관되지 않는 이유는 무엇입니까?

ListAdapter를 사용하는 RecyclerView에서 ForegroundColorSpan 검색 텍스트 강조 표시가 일관되지 않는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-13 08:18:02991검색

Why is ForegroundColorSpan Search Text Highlighting Inconsistent in RecyclerView with ListAdapter?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.