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

Mengapakah Teks Carian ForegroundColorSpan tidak konsisten dalam RecyclerView dengan ListAdapter?

DDD
Lepaskan: 2024-11-13 08:18:02
asal
995 orang telah melayarinya

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
    }
}
Salin selepas log masuk
// In CardRVAdapter
public void setFilter(List<Card> newSearchList, String adapSearchText) {

    if (newSearchList != null && !newSearchList.isEmpty()) {
        ArrayList<Card> tempList = new ArrayList<>(newSearchList);
        submitList(tempList);
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan