Membetulkan Penserlahan Teks Carian dalam RecyclerView dengan ListAdapter
Apabila menggunakan SearchView dengan RecyclerView yang dikuasakan oleh ListAdapter, adalah penting untuk menyerlahkan carian dengan betul keputusan. Walau bagaimanapun, isu biasa timbul apabila CardView pertama dalam senarai atau yang lain di bawah mungkin tidak menyerlahkan teks carian, atau penyerlahan berlaku secara tidak konsisten.
Sebab bagi tingkah laku ini terletak pada urutan latar belakang yang digunakan oleh ListAdapter untuk mengemas kini paparan , berpotensi menyebabkan set data tidak tersedia semasa pemaparan awal. Untuk menyelesaikan masalah ini, pertimbangkan langkah berikut:
Kod Contoh
// In the ListAdapter public class CardRVAdapter extends ListAdapter<Card, CardRVAdapter.ViewHolder> { private String searchString = ""; public void setFilter(List<Card> newSearchList, String searchText) { if (newSearchList != null && !newSearchList.isEmpty()) { this.searchString = searchText; List<Card> filteredList = new ArrayList<>(); for (Card card : newSearchList) { Card newCard = new Card(card); newCard.setSearchString(searchText); filteredList.add(newCard); } submitList(filteredList); } } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { final Card card = getCardAt(position); if (card != null) { holder.bindData(card, position); } } } // In the Card model public class Card { private String searchString; public Card(String todo, String searchString) { // Constructor with both original todo and search string } public String getSearchString() { return searchString; } public void setSearchString(String searchString) { this.searchString = searchString; } }
Dengan melaksanakan perubahan ini, anda boleh menyerlahkan teks carian dengan tepat dalam RecyclerView dengan ListAdapter, tanpa mengira tatal atau parap rendering.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Penyerlahan Teks Carian Tepat dalam RecyclerView dengan ListAdapter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!