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