I want to implement a search in the recycler view in which I use Object as Class in List because I embedded native ads within.
I used this as a reference to embedded ads in recycler view Reference:-
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String key = constraint.toString();
if (key.isEmpty()){
mDataFiltered = mData;
}else{
List<Object> isFiltered = new ArrayList<>();
for ( Object n : mData){
if (((News) n).getName().toLowerCase().contains(key.toLowerCase())){ //throw error at this line
isFiltered.add(n);
}
}
mDataFiltered = isFiltered;
}
FilterResults filterResults = new FilterResults();
filterResults.values = mDataFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
mDataFiltered = (List<Object>) results.values;
notifyDataSetChanged();
}
};
}
I tried casting Object as my model class but it gave this error
java.lang.ClassCastException: com.google.android.gms.internal.ads.zzafx cannot be cast to com.jamuitoday.model.News
at com.jamuitoday.adapter.RAdapter$1.performFiltering(RAdapter.java:211)
at android.widget.Filter$RequestHandler.handleMessage(Filter.java:236)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.os.HandlerThread.run(HandlerThread.java:67)
Your list contains News and Ads. Therefore you should control your item type before use it.
Change this code like below :