如何解决尝试为SearchView制作原始ArrayList的副本时无法复制ArrayList
我正在尝试为我的应用程序构建SearchView,并在YouTube上遵循“ CodingInFLow”的教程时,他说要创建将包含所有项目的原始ArrayList的副本。我完全按照教程进行操作,并使用我的应用程序进行了类似的操作。但是,当我编写“ mUploadsSearch = new ArrayList (上传)”时,它不存储任何数据,我的应用程序也不在SearchView上返回任何数据。如果我写“ mUploadsSearch = uploads”,它可以工作并过滤内容,但第一次搜索仅一次。
这是我的ImageAdapter代码:
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> implements
Filterable {
private Context mContext;
private List<Upload> mUploads;
private List<Upload> mUploadsSearch;
private OnItemClickListener mListener;
public ImageAdapter(Context context,List<Upload> uploads) {
mContext = context;
mUploads = uploads;
mUploadsSearch = new ArrayList<Upload>();
mUploadsSearch.addAll(uploads);
}
@Override
public ImageViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.image_item,parent,false);
return new ImageViewHolder(v);
}
@Override
public void onBindViewHolder(ImageViewHolder holder,int position) {
Upload uploadCurrent = mUploads.get(position);
holder.textViewName.setText(uploadCurrent.getName());
Picasso.get()
.load(uploadCurrent.getImageUrl())
.placeholder(R.drawable.ic_food)
.fit()
.centerCrop()
.into(holder.imageView);
}
@Override
public int getItemCount() {
return mUploads.size();
}
@Override
public Filter getFilter() {
return filter;
}
private Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
List<Upload> filteredList = new ArrayList<>();
if (charSequence == null || charSequence.length() == 0) {
filteredList.addAll(mUploadsSearch);
} else {
String filterPattern = charSequence.toString().toLowerCase().trim();
for (Upload item : mUploadsSearch) {
if (item.getName().toLowerCase().contains(filterPattern)) {
filteredList.add(item);
}
}
}
FilterResults results = new FilterResults();
results.values = filteredList;
return results;
}
@Override
protected void publishResults(CharSequence charSequence,FilterResults results) {
mUploads.clear();
mUploads.addAll((Collection<? extends Upload>) results.values);
notifyDataSetChanged();
}
};
public class ImageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
// View.OnCreateContextMenuListener,MenuItem.OnMenuItemClickListener
{
public TextView textViewName;
public ImageView imageView;
public ImageViewHolder(View itemView) {
super(itemView);
textViewName = itemView.findViewById(R.id.text_view_name);
imageView = itemView.findViewById(R.id.image_view_upload);
itemView.setOnClickListener(this);
//itemView.setOnCreateContextMenuListener(this);
}
@Override
public void onClick(View v) {
if (mListener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
mListener.onItemClick(position);
}
}
}
}
public interface OnItemClickListener {
void onItemClick(int position);
//void onWhatEverClick(int position);
//void onDeleteClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
}
很抱歉遇到任何错误,对于编程我是完全陌生的,将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。