J'essaie actuellement d'implémenter un SearchView, mais les résultats de recherche affichés ne changent que pour la première recherche, tout ce que j'entre dans SearchView est ignoré.Comment rechercher une liste d'objets affichés dans un RecyclerView?
Voici mon code pour la recherche dans mon MainActivity.java
:
testList = Arrays.asList(new TestItem("aw"), new TestItem("aa"), new TestItem("w"));
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.test_menu, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setOnQueryTextListener(this);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onQueryTextChange(String newText) {
List<TestItem> result = new ArrayList<>();
for(TestItem t: testList) {
if(t.getName().contains(newText) {
result.add(t);
}
}
adapter.changeList(result);
return true;
}
adapter.changeList:
public void changeList(List<TestItem> newList) {
this.list = new ArrayList<>(newList);
}
onQueryTextChange est appelée après chaque changement de texte, mais le résultat de recherche est présentée une seule fois. Lorsque vous entrez a
et Enter
le RecyclerView affiche aw
et aa
(est-il normal d'avoir à appuyer sur Entrée pour onQueryTextChange
pour commencer?), Mais quand j'entre alors aa
les articles affichés restent les mêmes.
Merci beaucoup pour votre aide. Votre solution fonctionne pour moi si je remplace 'filterResults.values = categoriesMain.clone();' avec 'filterResults.values = categoriesMain'. – sininen