android-如果未进行搜索,则隐藏recyclerview

时间:2018-09-12 01:19:40

标签: java android android-layout android-recyclerview searchview

我正在使用Searchview筛选Recyclerview中显示的Firebase条目。我希望在不进行搜索时Recyclerview消失,这很好,直到我从搜索到的项目返回到主要活动为止。搜索完成后,recyclerview列表再次可见。我希望只要不进行搜索就始终将其隐藏。以下是相关代码:

    msearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {


        @Override
        public boolean onQueryTextSubmit(String mQuery) {


            /*while (query.length() > 4) {
                mRecyclerView.setVisibility(View.VISIBLE);
            } */

            if (!(mQuery == null || mQuery.trim().isEmpty())) {
                mRecyclerView.setVisibility(View.VISIBLE);
            }

            else {
                mRecyclerView.setVisibility(View.GONE);

            }

            firebaseSearch(mQuery);

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            //filter as typed
            firebaseSearch(newText);
            return true;
        }
    });

    return super.onCreateOptionsMenu(menu);
}

2 个答案:

答案 0 :(得分:0)

需要考虑的几件事,我认为仅检查query != null可能并不总是正确的。它可能为空或理论上为空白。我个人会使用类似的东西:

if (query == null || query.trim().isEmpty()) {
    // No query made
}

接下来,可能我不太了解,我认为您有用户在其中进行搜索的活动A。搜索后,您将显示回收者视图。然后,他们单击一个项目,然后您跳到“活动B”。当用户导航回A时,列表仍然完整。如果这是正确的,则必须记住,当B在其顶部可见时,它不一定会被破坏。如果您使用的手机内存不足,则操作系统可能会调用onDestroy,并在您向后导航时重新创建它。无论如何...一个简单的解决方法是在导航到B时隐藏RecycleView。

答案 1 :(得分:0)

让我们假设您有2个活动:A和B。

单击活动A上的项目后,转到活动B,但是这次活动A并未完全销毁。因此,输入文本和recylcerView的状态将保持不变。从活动B返回活动A后,最好执行以下操作以清除搜索视图:

msearchView.setQuery("",false);
msearchView.setIconified(true);

由于清除了searchView,将执行onQueryTextChange()。您可以在此处检查条件。