Correction de la mise en surbrillance du texte de recherche dans RecyclerView avec ListAdapter
Lors de l'utilisation d'un SearchView avec un RecyclerView alimenté par un ListAdapter, il est crucial de mettre correctement en évidence la recherche résultats. Cependant, un problème courant survient lorsque le premier CardView de la liste ou d'autres ci-dessous peuvent ne pas mettre en surbrillance le texte recherché, ou que la mise en surbrillance se produit de manière incohérente.
La raison de ce comportement réside dans le fil d'arrière-plan utilisé par ListAdapter pour mettre à jour les vues. , ce qui pourrait rendre l'ensemble de données indisponible lors du rendu initial. Pour résoudre ce problème, envisagez les mesures suivantes :
Exemple de code
// 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; } }
En implémentant ces modifications, vous pouvez mettre en évidence avec précision le texte de recherche dans RecyclerView avec ListAdapter, quel que soit le défilement ou le rendu initial.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!