如果你想要在Android的ListView中使用SearchView进行过滤搜索,并且希望过滤结果不会直接导向正确的意图,你可以按照以下步骤进行操作:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private SearchView searchView;
private ArrayAdapter adapter;
private ArrayList originalList;
private ArrayList filteredList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.list_view);
searchView = findViewById(R.id.search_view);
originalList = new ArrayList<>();
originalList.add("Apple");
originalList.add("Banana");
originalList.add("Cherry");
originalList.add("Durian");
originalList.add("Grapes");
originalList.add("Mango");
originalList.add("Orange");
originalList.add("Pineapple");
filteredList = new ArrayList<>();
// 初始化适配器
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, filteredList);
listView.setAdapter(adapter);
// 设置搜索框监听器
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText);
return true;
}
});
}
private void filter(String query) {
filteredList.clear();
for (String item : originalList) {
if (item.toLowerCase().contains(query.toLowerCase())) {
filteredList.add(item);
}
}
adapter.notifyDataSetChanged();
}
}
在上述代码中,我们首先创建了一个原始的字符串列表originalList,并在ListView中显示它们。然后,我们创建了一个空的过滤后的字符串列表filteredList,并将其与ListView绑定。在搜索框的监听器中,我们调用了filter()方法,该方法通过遍历原始列表并根据查询字符串的匹配结果将项目添加到过滤列表中。最后,我们通知适配器数据发生更改,以更新ListView的显示。
这样,当用户在SearchView中输入文本时,ListView将根据输入的搜索查询进行过滤,但不会直接导向正确的意图。