在recyclerview中搜索项目

时间:2018-03-19 06:39:06

标签: java android

我有回收站视图,其中我获取了Web服务器上可用的文件广告文件夹列表。在Recycler视图中,我根据标志区分文件和文件夹。 问题出在搜索上。当我搜索文件夹时,它完美无缺。但是当我搜索文件资源时,图像集是文件夹,并且说明是空白的。 这就是发生的事情。

我的适配器代码

public class PersonalFolderAdapter extends RecyclerView.Adapter<PersonalFolderAdapter.LRViewHolder> {

    Context context;
    ArrayList<PersonalFolderModel> fileList , filterList;

    private OnItemClickListener mOnItemClickListener;
    private String DrivePath = Environment.getExternalStorageDirectory().toString() + File.separator + "Mobi" + File.separator + "Drive"+ File.separator + "Downloads";

    public PersonalFolderAdapter(Context context, ArrayList<PersonalFolderModel> fileList, OnItemClickListener onItemClickListener) {
        this.context = context;
        this.fileList = fileList;
        mOnItemClickListener = onItemClickListener;
        this.filterList = new ArrayList<>();
        this.filterList.addAll(fileList);
    }


    @Override
    public LRViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        Context context = parent.getContext();
        LayoutInflater inflater = LayoutInflater.from(context);
        // Inflate the custom layout
        View contactView = inflater.inflate(R.layout.raw_individual, parent, false);
        // Return a new holder instance
        return new LRViewHolder(contactView);
    }

    @SuppressLint("SetTextI18n")
    @Override
    public void onBindViewHolder(final LRViewHolder holder, @SuppressLint("RecyclerView") final int position) {
        // Get the data model based on position

        if (filterList.get(position) != null) {
            boolean isFile=fileList.get(position).getType_flag().equalsIgnoreCase("0");
            //if (fileList.get(position).getType_flag().equalsIgnoreCase("0")) {
                holder.bt_folder.setImageResource(isFile?R.drawable.icons_file:R.drawable.folder);
                holder.tv_fileNo.setText((position+1)+".");
                holder.fileName.setText(isFile?filterList.get(position).getFile_name():filterList.get(position).getFolder_name());
                holder.tv_date.setText(filterList.get(position).getUpload_date());
                holder.tv_desc.setText(isFile?filterList.get(position).getDesc():"");
                holder.tv_desc.setVisibility(isFile?View.VISIBLE:View.INVISIBLE);
                holder.labelDesc.setVisibility(isFile?View.VISIBLE:View.INVISIBLE);
                holder.bt_delete.setVisibility(isFile?View.VISIBLE:View.INVISIBLE);
                holder.bt_read.setVisibility(isFile?View.VISIBLE:View.INVISIBLE);

            /*} else {
                holder.bt_folder.setImageResource(R.drawable.folder);
                holder.tv_fileNo.setText("" + (position + 1) + ".");
                holder.fileName.setText(filterList.get(position).getFolder_name());
                holder.tv_date.setText(filterList.get(position).getUpload_date());
                holder.tv_desc.setVisibility(View.INVISIBLE);
                holder.labelDesc.setVisibility(View.INVISIBLE);
                holder.bt_delete.setVisibility(View.INVISIBLE);
                holder.bt_read.setVisibility(View.INVISIBLE);
            }*/
        }


        holder.bt_read.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                File file=new File(DrivePath,filterList.get(position).getFile_name());
                if (file.exists()){
                    mOnItemClickListener.onItemClick(view, position, "open");
                }else {
                    mOnItemClickListener.onItemClick(view, position, "read");
                }

            }
        });
        holder.bt_delete.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View view) {
                mOnItemClickListener.onItemClick(view, position, "delete");
            }
        });

        holder.parent_card.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                if (filterList.get(position).getType_flag().equalsIgnoreCase("1")) {
                    mOnItemClickListener.onItemClick(view, position, "card");
                }

            }
        });
    }
    @Override
    public int getItemCount() {
        return (null != filterList ? filterList.size() : 0);
    }

    public interface OnItemClickListener {
        void onItemClick(View view, int position, String click);
    }

    public class LRViewHolder extends RecyclerView.ViewHolder {
        public TextViewVerdana fileName, tv_fileNo,tv_date,tv_desc,labelDesc;
        public ImageView bt_delete,bt_folder;
        public ImageView bt_read;
        public CardView parent_card;

        public LRViewHolder(View itemView) {
            super(itemView);
            fileName = (TextViewVerdana) itemView.findViewById(R.id.tv_fileName);
            tv_date = (TextViewVerdana) itemView.findViewById(R.id.tv_date);
            tv_desc = (TextViewVerdana) itemView.findViewById(R.id.tv_desc);
            bt_delete = (ImageView) itemView.findViewById(R.id.bt_delete);
            bt_read = (ImageView) itemView.findViewById(R.id.bt_read);
            bt_folder = (ImageView) itemView.findViewById(R.id.iv_file_type);
            tv_fileNo = (TextViewVerdana) itemView.findViewById(R.id.tv_fileNo);
            labelDesc = (TextViewVerdana) itemView.findViewById(R.id.labelDesc);
            parent_card= (CardView) itemView.findViewById(R.id.parent_card);
        }
    }
    // Do Search...
    public void filter(final String text) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                filterList.clear();
                if (TextUtils.isEmpty(text)) {
                    filterList.addAll(fileList);
                } else {
                    for (PersonalFolderModel item : fileList) {
                        if (item.getDesc().toLowerCase().contains(text.toLowerCase()) ||
                                item.getFile_name().toLowerCase().contains(text.toLowerCase()) ||
                                item.getUpload_date().toLowerCase().contains(text.toLowerCase()) ||
                                item.getFolder_name().toLowerCase().contains(text.toLowerCase())) {
                            // Adding Matched items
                            filterList.add(item);
                        }
                    }
                }
                // Set on UI Thread
                ((Activity) context).runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        notifyDataSetChanged();
                    }
                });

            }
        }).start();

    }

}

任何帮助都将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

insted of

  

<强>的fileList 获得(位置).getType_flag()equalsIgnoreCase。(&#34; 0&#34);

应该是

  

<强> filterList 获得(位置).getType_flag()equalsIgnoreCase。(&#34; 0&#34);

onBindViewHolder中的

相关问题