Как я могу решить эту проблему? Я использую RecyclerView Filter, чтобы скрыть выбранные элементы и все работает нормально, но проблема в том, что элемент в результатах поиска не активен или не может поставить галочку. Я не могу вставить код в свою деятельность, потому что я использую SubItemRecyclerView.
Это мой код фильтра:
List<SubCandidates> sub;
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
FilterResults filterResults = new FilterResults();
if (charString.isEmpty()) {
subItemList = sub;
} else {
List<SubCandidates> filteredList = new ArrayList<>();
for (SubCandidates row : subItemList) {
// name match condition. this might differ depending on your requirement
// here we are looking for name or phone number match
if (row.getPosDes().toLowerCase().contains(charString.toLowerCase())) {
filteredList.add(row);
}
}
filterResults.values = filteredList;
filterResults.count = filteredList.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
subItemList = (List<SubCandidates>) filterResults.values;
// refresh the list with filtered data
notifyDataSetChanged();
}
};
}
и мой код onBindViewHolder:
if(checkif(maxlist)) {
String voter = smh.getString(Constants.section,"0");
String fi = null;
if(voter.contains("GRADE 7")) {
fi = voter.substring(0,7);
} else if(voter.contains("GRADE 8")) {
fi = voter.substring(0,7);
} else if(voter.contains("GRADE 9")) {
fi = voter.substring(0,7);
} else if(voter.contains("GRADE 10")) {
fi = voter.substring(0,8);
} else if(voter.contains("GRADE 11")) {
fi = voter.substring(0,8);
} else if(voter.contains("GRADE 12")) {
fi = voter.substring(0,8);
}
getFilter().filter(fi);
subItemViewHolder.chk.setVisibility(View.VISIBLE);
subItemViewHolder.rd.setVisibility(View.GONE);
subItemViewHolder.chk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
subItem.setSelected(subItem.isSelected());
if(subItem.isSelected() == true) {
db.addData(subItem,"1");
Toast.makeText(mContext,subItem.getCanID(),-1).show();
} else {
db.deleteData(subItem);
}
}});
subItemViewHolder.chk.setChecked(subItem.isSelected());
}