无法根据每个项目保存的长时间编写过滤掉RecyclerView中项目的算法

Ham*_*sir 8 java algorithm android android-recyclerview fastadapter

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

假设有在7个项目RecyclerView与长值: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
}
Run Code Online (Sandbox Code Playgroud)

我尝试了各种各样的东西,但没有成功.

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

请帮助我解决这个问题,并提出一些我可以实现此目的的算法或代码.

Abh*_*hek 6

根据给定的信息量,我只能假设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
}
Run Code Online (Sandbox Code Playgroud)

此外,我从未使用过FastAdapter,但我认为如果扩展其类,必须有一些方法可以覆盖.

更新

因为,您在理解使用a的基础知识时遇到问题ViewAdapter,我建议ViewAdapter在使用任何库之前学习和实现自定义.是一个关于如何实现ViewAdapterRecyclerView 的广泛教程.

现在,在您实现ViewAdapter之后,您可以使用我的代码来过滤掉卡片.基本上,代码正在做的是保存内部所有所需数据的列表mItemList,同时mDisplayList设置存储要显示的项目的列表,该列表每次更新mAboveThousand,其存储高于或低于1000的用户偏好.现在mDisplayList必须使用它来扩充RecyclerView中的数据.