在RecyclerView中隐藏特定项目(在SharedPreferences中设置)

时间:2015-05-28 23:45:00

标签: android sharedpreferences android-recyclerview

如果项目内容与SharedPreferences中设置的首选项匹配,我想过滤/隐藏RecycleView中的特定项目。

我想我必须以某种方式阻止这些特定项目在适配器中膨胀,但我不知道如何。

有什么想法吗?

干杯!

1 个答案:

答案 0 :(得分:1)

适配器是使用ListViewGridViewRecyclerView的模型 - 视图 - 控制器设计模式的模型部分。所以你必须这样想:适配器,随时,必须反映你想要在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()以重新显示更改后的内容数据