如果项目内容与SharedPreferences中设置的首选项匹配,我想过滤/隐藏RecycleView中的特定项目。
我想我必须以某种方式阻止这些特定项目在适配器中膨胀,但我不知道如何。
有什么想法吗?
干杯!
答案 0 :(得分:1)
适配器是使用ListView
,GridView
和RecyclerView
的模型 - 视图 - 控制器设计模式的模型部分。所以你必须这样想:适配器,随时,必须反映你想要在RecyclerView
中显示的内容。
所以这是一个例子:假设您有四个项目,并且您想过滤第三个项目,因为它符合您的偏好。适配器的getCount()
方法必须返回3
。对于getView()
,position == 0必须返回第一个项目视图,position == 1必须返回第二个项目视图,position == 2必须返回第四个项目视图。
由您的适配器代码决定所有计算和偏移量,以确保它始终呈现视图的一致状态。例如,假设您有一个包含项目的String
数组,以及一个指向不应显示的数组项的索引dontshow
。您需要为getView()
执行类似的操作:
int index = position; // position is input parameter
if (index >= dontshow) {
index++; // skip over the don't-show item
}
String item = items[index];
// now construct your view from this item
和
@Override
public int getCount() {
return items.length - 1;
}
然后,当您对模型进行更改时,调用notifyDataSetChanged()
告诉RecyclerView
它必须再次调用适配器上的getCount()
和getView()
以重新显示更改后的内容数据