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

Hide specific items (set in SharedPreferences) in RecyclerView

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

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

有什么想法吗?

干杯!

适配器是模型-视图-控制器设计模式的模型部分,用于使用 ListViewGridViewRecyclerView。所以你必须这样想:适配器,随时,必须反映你想要在RecyclerView.

中显示的内容

举个例子:假设您有四个项目,您想要过滤第三个项目,因为它符合您的偏好。您的适配器的 getCount() 方法必须 return 3。对于 getView(),position == 0 必须 return 第一个项目视图,position == 1 必须 return 您的第二个项目视图,position == 2 必须 return 您的 第四个项视图。

由您的适配器代码来计算所有计算和偏移量,以确保它始终向视图呈现一致的状态。因此,例如,假设您有一个包含项目的 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() 以重新显示更改后的数据。