Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Memastikan Penyerlahan Teks Carian Tepat dalam RecyclerView dengan ListAdapter?

Mary-Kate Olsen
Lepaskan: 2024-11-22 05:12:21
asal
959 orang telah melayarinya

How to Ensure Accurate Search Text Highlighting in RecyclerView with ListAdapter?

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:

  • Gunakan perbezaan item: Pastikan senarai yang diserahkan dibandingkan untuk menentukan item yang telah berubah, mencetuskan kemas kini paparan yang sesuai.
  • Ubah suai model Kad: Perkenalkan sifat searchString kepada model Kad. Apabila menapis, buat contoh Kad baharu dengan rentetan carian yang dikemas kini. Ini mencetuskan perubahan data yang lengkap, memaksa ListAdapter untuk memanggil onBindViewHolder() untuk setiap item sedia ada.

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;
    }
}
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan