- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 RecyclerView
中有几个项目,每个项目都保存了一个 long
值。我正在使用 FastAdapter作为我的 RecyclerView
的适配器。
假设 RecyclerView
中有 7 个 long 值的项目:11122
、12321
、-98811
、8870
、-88009
、3398
和 -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
的基础知识时遇到问题,我建议在使用任何库之前学习并实现自定义 ViewAdapter
。 Here是关于如何为 RecyclerView 实现 ViewAdapter
的详尽教程。
现在,在您实现了 ViewAdapter 之后,您可以使用我的代码来过滤卡片。基本上,代码所做的是在 mItemList
中保存一个包含所有必需数据的列表,而 mDisplayList
是一个存储要显示的项目的列表,它会在每次更新时更新 -时间mAboveThousand
,存储1000以上或以下的用户偏好设置。现在必须使用此 mDisplayList
来扩充 RecyclerView 内的数据。
关于java - 无法编写基于每个项目保存的长期过滤掉 RecyclerView 中的项目的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41389675/
我正在编写一个快速的 preg_replace 来从 CSS 中删除注释。 CSS 注释通常有这样的语法: /* Development Classes*/ /* Un-comment me for
使用 MySQL,我有三个表: 项目: ID name 1 "birthday party" 2 "soccer match" 3 "wine tasting evening" 4
我是一名优秀的程序员,十分优秀!