android - 如果没有搜索,则隐藏recyclerview

问题描述 投票:0回答:2

我正在使用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);
}
java android android-layout android-recyclerview searchview
2个回答
0
投票

让我们假设你有2个活动:A和B.

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

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

由于清除了searchView,因此将执行onQueryTextChange()。你可以在这里查看条件。


0
投票

要考虑的一些事情,我认为只是检查query != null可能并不总是正确的。它可能是空的或理论上是空白的。我会亲自使用类似的东西:

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

接下来,我可能不太明白,我相信你有用户搜索的活动A.一旦他们搜索,您就会显示回收者视图。然后他们点击一个项目,然后跳转到活动B.当用户导航回A时,列表仍然是满的。如果这是正确的,你必须记住,当B在其顶部可见时,A不一定被破坏。如果您所使用的手机内存不足,操作系统可能会调用onDestroy并在您导航时重新创建它。无论如何...这里的一个简单修复就是在导航到B时隐藏RecycleView。

© www.soinside.com 2019 - 2024. All rights reserved.