如果您确实想继续使用 FastAdapter,它有一个内置的过滤器功能(参见项目 README 中的第5 点。请注意,该filter
方法应该在之后 withFilterPredicate
而不是之前调用,如图所示)。
编辑 - 在你指出我之前误解了你之后 - 这是我更新的建议说明:
您需要解析要显示的集合的逻辑(使用您在评论中提到的对话框中的复选框)并将该信息传递给过滤器,例如:
boolean displayUnderThreshold = //put the logic here - true if you want <1000
fastAdapter.filter(Boolean.toString(displayUnderThreshold));
您设置适配器的位置(在调用上述行之前)有:
final long threshold = 1000;
fastAdapter.withFilterPredicate(new IItemAdapter.Predicate<GRModeClass>() {
@Override
public boolean filter(GRModeClass item, CharSequence constraint) {
boolean displayUnderThreshold = new Boolean(constraint.toString());
return (displayUnderThreshold ^ (item.l<threshold)); //false to remove from list
}
});
旧答案
ms
从我认为您想使用外部
l
long 指标根据它们的 long 值过滤项目时开始:
在您的代码中,假设您的应用程序确实到达了if
您在问题中提到的应该何时 - 删除fastItemAdapter.clear();
and 而不是内部写入的for
循环if
fastItemAdapter.filter(Long.toString(l));
在此之前的某个地方,最好在您设置适配器的位置(最有可能在onCreate
of 中MainActivity
)添加以下内容:
final long threshold = 1000;
fastAdapter.withFilterPredicate(new IItemAdapter.Predicate<GRModeClass>() {
@Override
public boolean filter(GRModeClass item, CharSequence constraint) {
long indicator = new Long(constraint.toString());
return (item.ms<threshold && indicator>=threshold) || (item.ms>=threshold && indicator<threshold) ;
}
});
(假设这里GRModeClass
是您的物品类别,并且long ms
您提到的时间应该确定是否)