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

我一直在研究一个搜索功能,这将使我能够在我的 RecyclerView 中搜索数据。单击搜索图标时,我的应用程序崩溃。经过一些调试后,我发现了问题,似乎无法清除或向新列表添加信息。


适配器类.java


public 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);

                        }

                    }

                }

            });

        }

    }

    }

BIG阳
浏览 164回答 1
1回答

萧十郎

请显示调用您的 JobAdapter 构造函数的代码。在 JobAdapter 构造函数中,您使用 List.subList 创建由原始列表支持的子列表视图。因此,您的子列表将继承支持列表上的任何属性(如不变性。)堆栈跟踪清楚地显示您正在尝试清除无法清除的列表,我只能假设这是因为它是不可变的。为了解决这个问题,您可以从 JobAdapter 构造函数中的子列表创建一个新的 ArrayList,如下所示:jobs&nbsp;=&nbsp;new&nbsp;ArrayList<>(job.subList(1,&nbsp;job.size()));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java