为了账号安全,请及时绑定邮箱和手机立即绑定

无法清除或向列表添加数据 - UnsupportedOperationException

无法清除或向列表添加数据 - UnsupportedOperationException

BIG阳 2021-12-01 17:11:27
我一直在研究一个搜索功能,这将使我能够在我的 RecyclerView 中搜索数据。单击搜索图标时,我的应用程序崩溃。经过一些调试后,我发现了问题,似乎无法清除或向新列表添加信息。适配器类.javapublic class JobAdapter extends RecyclerView.Adapter<JobAdapter.ViewHolder> implements Filterable {    private OnJobClickListener mListener;    private List<Job> jobs;    private List<Job> jobsListFiltered;    private static final String LOG_TAG = JobAdapter.class.getName();    public interface OnJobClickListener {        void onJobClick(Job job);    }    public void setOnItemClickListener(OnJobClickListener listener) {        mListener = listener;    }    // Provide a reference to the views for each data item    // Provide access to all the views for a data item in a view holder    public class ViewHolder extends RecyclerView.ViewHolder {        public TextView jobTitle;        public TextView companyName;        public TextView datePosted;        public ImageView companyLogo;        public View layout;        public ViewHolder(View itemView) {            super(itemView);            layout = itemView;            jobTitle = layout.findViewById(R.id.textView_job_title);            companyName = layout.findViewById(R.id.textView_company_name);            datePosted = layout.findViewById(R.id.textView_date);            companyLogo = layout.findViewById(R.id.imageViewLogo);            itemView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    if (mListener != null) {                        int position = getAdapterPosition();                        if (position != RecyclerView.NO_POSITION) {                            Job currentJob = jobs.get(position);                            mListener.onJobClick(currentJob);                        }                    }                }            });        }    }    }
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

请显示调用您的 JobAdapter 构造函数的代码。

在 JobAdapter 构造函数中,您使用 List.subList 创建由原始列表支持的子列表视图。因此,您的子列表将继承支持列表上的任何属性(如不变性。)

堆栈跟踪清楚地显示您正在尝试清除无法清除的列表,我只能假设这是因为它是不可变的。

为了解决这个问题,您可以从 JobAdapter 构造函数中的子列表创建一个新的 ArrayList,如下所示:

jobs = new ArrayList<>(job.subList(1, job.size()));


查看完整回答
反对 回复 2021-12-01
  • 1 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信