現在のところ、SearchViewを実装しようとしていますが、表示された検索結果は最初のSearchでのみ変更され、SearchViewに入力したものはすべて無視されます。RecyclerViewに表示されるオブジェクトのリストを検索するには?
は、ここに私の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は、各テキストの変更後に呼び出されますが、検索結果は一度だけ表示されます。 a
とEnter
と入力すると、RecyclerViewはとaa
と表示されます(onQueryTextChange
を開始するにはEnterキーを押す必要があります)。aa
と入力すると、表示される項目は変わりません。
ありがとうございました。 'filterResults.values = categoriesMain.clone();'を 'filterResults.values = categoriesMain'に置き換えれば、あなたのソリューションは私のために働きます。 – sininen