0
我目前正试图实现一个SearchView,但显示的搜索结果只会改变第一个搜索,我忽略了进入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显示aw
和aa
(是否必须按Enter键以启动onQueryTextChange
?),但是当我输入aa
时,显示的项目保持不变。
非常感谢您的帮助。如果我用'filterResults.values = categoriesMain'替换'filterResults.values = categoriesMain.clone();',你的解决方案对我有用。 – sininen