Rumah >Java >javaTutorial >Mengapakah Teks Carian ForegroundColorSpan tidak konsisten dalam RecyclerView dengan 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!