gpt4 book ai didi

java - 无法编写基于每个项目保存的长期过滤掉 RecyclerView 中的项目的算法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:59 24 4
gpt4 key购买 nike

我在 RecyclerView 中有几个项目,每个项目都保存了一个 long 值。我正在使用 FastAdapter作为我的 RecyclerView 的适配器。

假设 RecyclerView 中有 7 个 long 值的项目:1112212321-988118870-880093398-22113

所以,我想做的是,我想使用以下逻辑根据上面给定的长值过滤项目:

if (l <= 1000) {
// show items with long value <=1000
} else if (l > 1000) {
// show items with long value >1000
}

我尝试了各种方法,但没有成功。

更新 1:这里的项目是一种不同的数据,存储在 CardView 中,然后显示在 RecyclerView 中。每张卡片包含不同的数据,其中一个是上面给出的 long 值。我想根据上面给出的逻辑,根据存储在每张卡片中的这些 long 值来过滤数据。

请帮我解决这个问题,并提出一些算法或代码来实现这一点。

最佳答案

根据给定的信息量,我只能假设 l 是一个外部选择器值,它控制要在 RecyclerView 中显示的项目。如果不是这种情况,请在下方评论,我会尝试更正我的答案。

我建议实现自定义 ViewAdapter,使用相应的方法发送项目列表和选择器变量 l:

public class ItemsAdapter extends 
RecyclerView.Adapter<ItemsAdapter.ItemViewHolder> {

private List<Long> mItemList;
private List<Long> mDisplayItems;
private boolean mAboveThousand = true;

public void setItemList(List<Long> list) {
mItemList = list;
updateDisplayItems();
}

public void setSelectionType(boolean aboveThousand) {
mAboveThousand = aboveThousand;
updateDisplayItems();
}

private updateDisplayItems() {
mDisplayItems.clear();

for(Long item: mItemList) {
if(/*check your contition*/) {
mDisplayItems.add(item);
}
}

notifyDataSetChanged(); //important
}

...
// Rest of implementation
}

此外,我从未使用过 FastAdapter,但我想如果你扩展它的类,一定有一些方法可以重写。

更新

由于您在理解使用 ViewAdapter 的基础知识时遇到问题,我建议在使用任何库之前学习并实现自定义 ViewAdapterHere是关于如何为 RecyclerView 实现 ViewAdapter 的详尽教程。

现在,在您实现了 ViewAdapter 之后,您可以使用我的代码来过滤卡片。基本上,代码所做的是在 mItemList 中保存一个包含所有必需数据的列表,而 mDisplayList 是一个存储要显示的项目的列表,它会在每次更新时更新 -时间mAboveThousand,存储1000以上或以下的用户偏好设置。现在必须使用此 mDisplayList 来扩充 RecyclerView 内的数据。

关于java - 无法编写基于每个项目保存的长期过滤掉 RecyclerView 中的项目的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41389675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com