Rumah >Java >javaTutorial >Mengapakah Teks Carian ForegroundColorSpan tidak konsisten dalam RecyclerView dengan ListAdapter?

Mengapakah Teks Carian ForegroundColorSpan tidak konsisten dalam RecyclerView dengan ListAdapter?

DDD
DDDasal
2024-11-13 08:18:02961semak imbas

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

Betulkan Penyerlahan Teks Carian ForegroundColorSpan dengan RecyclerView dan ListAdapter

Isu

Teks carian yang menyerlahkan Color.GREEN menggunakan ForegroundColorSpan tidak konsisten dalam RecyclerView menggunakan ListAdapter. Sesetengah item dalam senarai tidak diserlahkan atau hanya diserlahkan selepas menatal.

Sebab

ListAdapter menggunakan kemas kini tak segerak dan set data mungkin tidak sedia apabila onBindViewHolder() dipanggil. Akibatnya, searchString tidak tersedia untuk menggunakan penyerlahan dengan betul.

Penyelesaian

Kemas kini model Kad untuk memasukkan sifat searchString. Semasa penapisan, buat contoh Kad baharu dengan searchString yang dikemas kini. Ini akan mencetuskan kaedah onBindViewHolder() dan menggunakan penyerlahan dengan betul.

// 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);
    }
}

Atas ialah kandungan terperinci Mengapakah Teks Carian ForegroundColorSpan tidak konsisten dalam RecyclerView dengan ListAdapter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn