Rumah > Java > javaTutorial > Cara Menyerlahkan Teks yang Dicari dalam RecyclerView dengan ListAdapter: Mengapa Kadang-kadang Gagal dan Bagaimana Anda Boleh Membetulkannya?

Cara Menyerlahkan Teks yang Dicari dalam RecyclerView dengan ListAdapter: Mengapa Kadang-kadang Gagal dan Bagaimana Anda Boleh Membetulkannya?

Susan Sarandon
Lepaskan: 2024-11-25 12:32:11
asal
596 orang telah melayarinya

How to Highlight Searched Text in RecyclerView with ListAdapter: Why Does It Sometimes Fail and How Can You Fix It?

Menyerlahkan Teks Carian dalam RecyclerView dengan ListAdapter

Apabila menggunakan SearchView dalam Bar Alat di atas senarai RecyclerView bagi CardViews, menyerlahkan teks carian dalam CardViews menggunakan ListAdapter mungkin menghadapi masalah. CardView awal dan yang berikutnya mungkin tidak menyerlahkan teks carian dengan betul, atau penyerlahan mungkin tidak muncul sehingga menatal senarai.

Untuk menangani perkara ini, adalah penting untuk mempertimbangkan sifat ListAdapter. ListAdapter mengemas kini paparan pada urutan latar belakang, jadi set data mungkin tidak segera bersedia untuk diproses.

Dalam kod yang disediakan, isu ini berpunca daripada kaedah penapis dalam MainActivity, khususnya baris:

submitList(tempList);
Salin selepas log masuk

Barisan ini mengalih keluar dan menggantikan item sedia ada dalam senarai. Untuk item sedia ada pada RecyclerView, ia tidak mencetuskan onBindViewHolder kerana data item tidak berubah. Oleh itu, untuk membetulkan ini, sifat searchString harus ditakrifkan sebagai sebahagian daripada model Kad.

Apabila menapis, bukannya mengubah suai model Kad sedia ada, buat model Kad baharu dengan rentetan carian yang dikemas kini:

public void setFilter(List<Card> newSearchList, String adapSearchText) {

    if (newSearchList != null && !newSearchList.isEmpty()) {
        this.searchString = adapSearchText.toLowerCase(Locale.US);
        ArrayList<Card> tempList = new ArrayList<>();
        for (Card card : newSearchList) {
            tempList.add(new Card(card.getTodo(), searchString));
        }
        submitList(tempList);
    }
}
Salin selepas log masuk

Dengan mencipta model Kad baharu dengan searchString yang dikemas kini, kaedah onBindViewHolder dicetuskan untuk semua item pada RecyclerView, memastikan penserlahan yang betul bagi teks carian.

Atas ialah kandungan terperinci Cara Menyerlahkan Teks yang Dicari dalam RecyclerView dengan ListAdapter: Mengapa Kadang-kadang Gagal dan Bagaimana Anda Boleh Membetulkannya?. 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