我有回收站视图,其中我获取了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();
}
}
任何帮助都将不胜感激。谢谢。
答案 0 :(得分:0)
insted of
<强>的fileList 强>获得(位置).getType_flag()equalsIgnoreCase。(&#34; 0&#34);
应该是
onBindViewHolder中的<强> filterList 强>获得(位置).getType_flag()equalsIgnoreCase。(&#34; 0&#34);