我有一个ArrayList,我在其中使用过滤器来获取搜索结果。我想放置一个文本“找不到结果”如果查询没有返回任何内容,如果它返回结果,则删除上面的文本(noResultFoundTextView.setVisibility(View.GONE);)
你能告诉我如何实施吗?
我的菜单创建方式如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_menu,menu);
MenuItem item = menu.findItem(R.id.search_menu);
SearchView searchView = (SearchView) item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
mAdapter.getFilter().filter(newText);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
答案 0 :(得分:0)
显示您的其余代码,我可以进一步解释您要执行的操作。
不确定"公共布尔onQueryTextSubmit(字符串查询)"和" public boolean onQueryTextChange(String newText)"应该这样做,但如果这是过滤器实现的一部分,那么如果在过滤器中找到了查询文本,则必须返回true。
如果找到了值,您可以使用以下示例返回true
使用列表过滤器
list.stream().filter(string -> string.contains(filterString)).findFirst().orElseGet("No Results Found");
或者如果你得到NullPointerExceptions,试试
try {
return list.stream().filter(string -> string.contains(filterString)).findFirst();
} catch (NullPointerException e) {
return "No Results Found";
}