使用嵌入式原生广告在 recyclerview 中实现搜索
Posted
技术标签:
【中文标题】使用嵌入式原生广告在 recyclerview 中实现搜索【英文标题】:implement search in recyclerview with embedded native ads 【发布时间】:2020-12-22 06:01:20 【问题描述】:我想在回收站视图中实现搜索,在该视图中我使用 Object 作为 List 中的类,因为我在其中嵌入了原生广告。
我在回收站视图 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();
;
我尝试将 Object 转换为我的模型类,但它给出了这个错误
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)
【问题讨论】:
【参考方案1】:您的列表包含新闻和广告。因此,您应该在使用之前控制您的项目类型。
if (((News) n).getName().toLowerCase().contains(key.toLowerCase())) //throw error at this line
isFiltered.add(n);
如下更改此代码:
if(n.getItemViewType(mData.indexOf(n)) == 0) //MENU_ITEM_VIEW_TYPE
if (((News) n).getName().toLowerCase().contains(key.toLowerCase()))
isFiltered.add(n);
【讨论】:
以上是关于使用嵌入式原生广告在 recyclerview 中实现搜索的主要内容,如果未能解决你的问题,请参考以下文章
当我滚动 Recyclerview 时,Admob 原生广告显示空白
Recyclerview - Facebook 原生广告 - 不可点击
如何在 RecyclerView 之间添加 Facebook Audience Network 原生广告