Android中的过滤器返回任何内容

时间:2018-03-19 17:50:11

标签: java android

我有一个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);
}

1 个答案:

答案 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";
}