在 RecyclerView 中隐藏特定项目(在 SharedPreferences 中设置)
Hide specific items (set in SharedPreferences) in RecyclerView
如果项目内容与 SharedPreferences 中设置的首选项匹配,我想 filter/hide RecycleView 中的特定项目。
我想我必须以某种方式防止这些特定物品在适配器中膨胀,但我不知道如何做。
有什么想法吗?
干杯!
适配器是模型-视图-控制器设计模式的模型部分,用于使用 ListView
、GridView
和 RecyclerView
。所以你必须这样想:适配器,随时,必须反映你想要在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()
以重新显示更改后的数据。
如果项目内容与 SharedPreferences 中设置的首选项匹配,我想 filter/hide RecycleView 中的特定项目。
我想我必须以某种方式防止这些特定物品在适配器中膨胀,但我不知道如何做。
有什么想法吗?
干杯!
适配器是模型-视图-控制器设计模式的模型部分,用于使用 ListView
、GridView
和 RecyclerView
。所以你必须这样想:适配器,随时,必须反映你想要在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()
以重新显示更改后的数据。