Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试为SearchView复制原始ArrayList时无法复制ArrayList_Java_Android_Arraylist_Android Recyclerview_Searchview - Fatal编程技术网

Java 尝试为SearchView复制原始ArrayList时无法复制ArrayList

Java 尝试为SearchView复制原始ArrayList时无法复制ArrayList,java,android,arraylist,android-recyclerview,searchview,Java,Android,Arraylist,Android Recyclerview,Searchview,我正试图为我的应用程序构建一个SearchView,在YouTube上学习“CodingFlow”的教程时,他说要创建一个包含所有项目的原始ArrayList副本。我彻底遵循了教程,用我的应用程序做了类似的事情。但当我写“muploadsearch=newarraylist(uploads)”时,它不会存储任何数据,我的应用程序也不会在SearchView上返回任何数据。如果我写“muploadsearch=uploads”,它确实可以工作并过滤内容,但在第一次搜索中只过滤一次 以下是我的Ima

我正试图为我的应用程序构建一个SearchView,在YouTube上学习“CodingFlow”的教程时,他说要创建一个包含所有项目的原始ArrayList副本。我彻底遵循了教程,用我的应用程序做了类似的事情。但当我写“muploadsearch=newarraylist(uploads)”时,它不会存储任何数据,我的应用程序也不会在SearchView上返回任何数据。如果我写“muploadsearch=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;
}
公共类ImageAdapter扩展了RecyclerView。适配器实现
可过滤{
私有上下文;
私人列表多路复用器;
私有列表搜索;
私人监听者;
公共ImageAdapter(上下文、列表上载){
mContext=上下文;
mUploads=上传;
muploadsearch=newarraylist();
addAll(上传);
}
@凌驾
public ImageViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutFlater.from(mContext)。充气(R.layout.image_项,父项,false);
返回新的ImageViewHolder(v);
}
@凌驾
BindViewHolder上的公共无效(ImageViewHolder,int位置){
Upload uploadCurrent=mUploads.get(位置);
holder.textViewName.setText(uploadCurrent.getName());
毕加索
.load(uploadCurrent.getImageUrl())
.占位符(R.drawable.ic_食品)
.fit()
.centerCrop()
.插入(支架.图像视图);
}
@凌驾
public int getItemCount(){
返回mUploads.size();
}
@凌驾
公共过滤器getFilter(){
回流过滤器;
}
专用筛选器筛选器=新筛选器(){
@凌驾
受保护过滤器结果执行过滤(CharSequence CharSequence){
List filteredList=新建ArrayList();
if(charSequence==null | | charSequence.length()==0){
filteredList.addAll(muploadsearch);
}否则{
String filterPattern=charSequence.toString().toLowerCase().trim();
用于(上载项目:muploadsearch){
if(item.getName().toLowerCase().contains(filterPattern)){
filteredList.add(项目);
}
}
}
FilterResults results=新的FilterResults();
results.values=filteredList;
返回结果;
}
@凌驾
受保护的无效发布结果(CharSequence CharSequence、FilterResults results){
mUploads.clear();

mUploads.addAll((CollectionHello Paul使用这个:this.muploadsearch=new ArrayList();@DaltonDias嘿,道尔顿,谢谢你的评论和帮助,但我不太明白将原始ArrayList的数据复制到Muploadsearch会有什么影响。