我得到了这个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
}
答案 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
}
});