You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RecyclerView中按条件过滤仅显示未完成的工作任务卡片

解决方法

你当前代码的问题是仅在onBindViewHolder中跳过了已完成任务的内容赋值,但RecyclerView依然会为所有原始列表的条目创建空的item布局,同时getItemCount返回的是原始列表的总长度,所以会出现空占位或者所有条目都显示的问题。

具体修改步骤

1. 适配器新增过滤后数据源成员变量

在你的MyAdapter类中新增一个专门存储未完成任务的列表:

// 原有成员变量保留
Context context;
ArrayList<JobModel> userArrayList;
// 新增过滤后的未完成任务列表
private ArrayList<JobModel> unfinishedJobs;

2. 构造方法中初始化过滤逻辑

修改构造方法,初始化时就过滤出未完成的任务:

public MyAdapter(Context context, ArrayList<JobModel> userArrayList) {
    this.context = context;
    this.userArrayList = userArrayList;
    // 执行过滤逻辑
    filterUnfinishedJobs();
}
// 新增私有过滤方法
private void filterUnfinishedJobs() {
    unfinishedJobs = new ArrayList<>();
    for (JobModel job : userArrayList) {
        if (!job.isJob_finished()) {
            unfinishedJobs.add(job);
        }
    }
}

3. 修改列表长度返回值

把getItemCount的返回值改为过滤后的未完成任务列表长度:

@Override
public int getItemCount() {
    return unfinishedJobs.size();
}

4. 简化onBindViewHolder逻辑

现在unfinishedJobs里全是未完成任务,不需要再做状态判断,直接绑定数据即可:

@Override
public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder holder, int position) {
    JobModel job = unfinishedJobs.get(position);
    holder.tv_provided_title.setText(job.getJob_title());
    holder.tv_provided_payout.setText(job.getJob_payout());
    holder.tv_provided_id.setText(job.getJob_ID());

    // 原有点击事件保留
    holder.tv_provided_title.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) { ToDescription(v, job); }
    });
    holder.tv_provided_payout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) { ToDescription(v, job); }
    });
    holder.tv_provided_id.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) { ToDescription(v, job); }
    });
}

5. 新增数据刷新方法(可选但推荐)

当任务状态变更、列表新增/删除任务时,调用这个方法刷新列表:

public void refreshData(ArrayList<JobModel> updatedJobList) {
    this.userArrayList = updatedJobList;
    filterUnfinishedJobs();
    notifyDataSetChanged();
}

内容的提问来源于stack exchange,提问作者Don'thavetHanswers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:54:03