我一直在研究一个搜索功能,这将使我能够在我的 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()));
添加回答
举报
0/150
提交
取消