在回收站视图中过滤结果为0时显示空状态

时间:2019-06-21 16:23:33

标签: android android-recyclerview recycler-adapter

我得到了这个searchView,用于过滤recyclerView。因此,当某些搜索查询没有结果时,我想通过将其可见性设置为textView向用户显示VISIBLE。因此,在searchView侦听器中,我这样做:

            @Override
            public boolean onQueryTextChange(String s) {
                adapter.getFilter().filter(s);

                if (adapter.getItemCount()<=0){
                    emptyStateConatiner.setVisibility(View.VISIBLE);
                }
                else  emptyStateConatiner.setVisibility(View.GONE);

                return false;
            }

但是,这并不符合我的预期,因为当我键入不存在的搜索查询时,它首先显示为空recyclerView,然后,如果我向该查询键入其他字母,则得到{{ 1}}。

有人知道是什么原因引起的吗?

这是适配器代码: 包com.app.userprofile;

emptyStateContainer

}

1 个答案:

答案 0 :(得分:1)

我认为onQueryChanged回调是控制空状态的错误位置。您可以使用 DataSetObserver (documentation)来侦听列表更改,以便始终具有正确的match()大小。

  

注册一个观察者,当此适配器使用的数据发生更改时,将调用该观察者。

adapter.registerDataSetObserver(new DataSetObserver() {
    @Override public void onChanged() {
        super.onChanged();
        showEmptyStateIfAdapterIsEmpty();
        // access adapter's dataset size here or in that method
    } 
});