如何在 RecyclerView 中实现 Admob Native 广告?

How to implement Admob Native ads in RecyclerView?

我尝试按照 google 中的教程进行操作,但事情就是行不通。我的 RecyclerViewAdapter 出现错误。

错误如下 RecyclerViewAdapter。 (在第 9 行评论)

@Override
public void onBindViewHolder(final RecyclerViewHolder holder, final int position) {

int viewType = getItemViewType(position);

switch (viewType){

    case AD_VIEW_TYPE:
        NativeExpressAdViewHolder nativeExpressHolder = (NativeExpressAdViewHolder)holder;
        NativeExpressAdView adView = (NativeExpressAdView)arrayList.get(Position); //Inconvertible types; cannot cast 'app.modals.cardSetterGetter' to 'com.google.android.gms.ads.NativeExpressAdView

        ViewGroup adCardView = (ViewGroup)nativeExpressHolder.itemView;
        adCardView.removeAllViews();

        if(adView.getParent() != null){
            ((ViewGroup)adView.getParent()).removeView(adView);
        }

        adCardView.addView(adView);
        break;

    case MENU_ITEM_VIEW_TYPE:

    default:
        String card_image;
        CardSetterGetter cardSetterGetter;
        cardSetterGetter = arrayList.get(position);

        card_image = constants.SERVERIP.concat(cardSetterGetter.getImageurl());
        holder.cardSetterGetter = cardSetterGetter;
        holder.title.setText(cardSetterGetter.getImagetitle()); //set title

        cardSetterGetter.getTag();

        PointF focusPoint = new PointF(0.5f, 0f);
        // your app populates the focus point

        holder.image // set image
                .getHierarchy()
                .setActualImageFocusPoint(focusPoint);
        holder.image.setImageURI(Uri.parse(card_image));
}

}
  1. 您不应将视图添加到 listItemslistItems 包含项目,而不是视图。

  2. NativeExpressAdViewHolder 应该扩展 RecyclerViewHolder.

  3. holder.getPosition() 是一个位置,而不是 adView。无法转换为 NativeExpressAdView.

  4. 如果您仍想在项目列表中保留 adView,您应该更改项目列表的类型,如示例中所述。 private final List<Object> mRecyclerViewItems;

不是List<app.appname.CardSetterGetter>