为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

四季花海 2021-09-15 14:17:51
我正在使用 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 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

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

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

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

由于 searchView 被清除,onQueryTextChange() 将被执行。你可以在这里检查条件。


查看完整回答
反对 回复 2021-09-15
?
手掌心

TA贡献1942条经验 获得超3个赞

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


if (query == null || query.trim().isEmpty()) {

    // No query made

}

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


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 292 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信