【发布时间】:2016-12-25 07:32:40
【问题描述】:
输入搜索查询文本后,我会过滤RecyclerView 中的卡片项目并将它们显示在顶部。但是,当所有文本都被清除时,由于某种原因,列表不会回到原始状态。如何刷新我的RecyclerView 列表?下面的代码应该会给你一个更好的主意。
@Override
public boolean onQueryTextChange(String newText) {
final List<Number> filteredModelList = filter(numbers, newText);
Log.v("App", newText + ", " + numbers.size() + ", " + filteredModelList.size());
adapter.animateTo(filteredModelList);
list.scrollToPosition(0);
adapter.notifyDataSetChanged();
if (newText.equalsIgnoreCase("")){
try{
Log.e("SEARCH VIEW", "I CAN ENTER HERE"); //But the list doesn't refresh
adapter.animateTo(numbers);
adapter.notifyDataSetChanged();
list.setAdapter(adapter);
list.scrollToPosition
} catch(Exception e){
Log.e("Caught Exception", e.toString());
}
}
return true;
}
当没有项目匹配搜索时,这是有问题的 - 然后屏幕只是空白,没有卡片,SearchView 上的“X”按钮也不可见。当 X 可见并且我触摸它时,列表会恢复到其原始状态。作为第二个问题,有没有办法始终显示关闭图标(“X”)?
【问题讨论】:
-
请发布
filter和animateTo方法 -
嗨,我不允许发布这些方法。但是,与问题一样,我正在输入条件 [f (newText.equalsIgnoreCase("")){] - 我需要在那里刷新我的视图。该怎么做?
-
所以很难提供帮助。检查您是否没有从这些方法中删除带有 callByRefrence 的项目,检查您是否从带有空字符串的过滤器方法返回正确的数据。您需要对其进行调试以找出问题所在
-
为
RecyclerView写一个generic适配器(类似于ArrayAdapter为普通ListViews),那么以后就不用写这个过滤了每次需要新的“过滤回收器视图”时,一遍又一遍地编写代码
标签: java android android-recyclerview searchview android-cardview