在 Recyclerview 中嵌入广告 [英] Embedding ads within Recyclerview

查看:31
本文介绍了在 Recyclerview 中嵌入广告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将我的应用程序从 listview 升级到 recyclerview.当我使用列表视图时,我使用 来自谷歌,它给出了完整的解释

解决方案

在你的adapter中,首先需要重写getItemViewType,例如:

@Overridepublic int getItemViewType(int position){如果(位置 % 5 == 0)返回 AD_TYPE;返回 CONTENT_TYPE;}

然后在onCreateViewHolder中,根据类型膨胀不同的视图.像这样:

@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType){视图 v = null;如果(视图类型 == AD_TYPE){v = new AdView(activity, AdSize.BANNER, ADMOB_ID);浮动密度 = activity.getResources().getDisplayMetrics().密度;int height = Math.round(AdSize.BANNER.getHeight() * 密度);AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.FILL_PARENT,height);v.setLayoutParams(params);AdRequest adRequest = new AdRequest.Builder().build();if (adRequest != null && v != null){v.loadAd(adRequest);}}别的v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_layout, viewGroup, false);RecyclerView.ViewHolder viewHolder = new RecyclerView.ViewHolder(v);返回 viewHolder;}

I am trying to upgrade my app from listview to recyclerview. When I was using listview I had embedded ads within the listview using this tutorial.

I am not able to add it within recyclerview similarly. Any views on how this is to be done in a Recyclerview?

Currently in my listview the code is as below for loading ads:

    if ((position % k) == 0) {
      if (convertView instanceof AdView) {
        return convertView;
      } else {
        // Create a new AdView
        AdView adView = new AdView(activity, AdSize.BANNER,
                                   ADMOB_ID);

        float density = activity.getResources().getDisplayMetrics().density;
        int height = Math.round(AdSize.BANNER.getHeight() * density);
        AbsListView.LayoutParams params = new AbsListView.LayoutParams(
            AbsListView.LayoutParams.FILL_PARENT,
            height);
        adView.setLayoutParams(params);

        adView.loadAd(new AdRequest());
        return adView;
      }
    } else {
      return delegate.getView(position - (int) Math.ceil(position / k) - 1,
          convertView, parent);
    }

This is how it should look:

Update: Refer this video from google, it gives the complete explanation

解决方案

In your adapter, you first need to override getItemViewType, for example:

@Override
public int getItemViewType(int position) 
{
    if (position % 5 == 0)
        return AD_TYPE; 
    return CONTENT_TYPE;
}

Then in onCreateViewHolder, inflate a different view according to the type. Something like this:

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) 
{
    View v = null;

    if (viewType == AD_TYPE)
    {
        v = new AdView(activity, AdSize.BANNER, ADMOB_ID);
        float density = activity.getResources().getDisplayMetrics().density;
        int height = Math.round(AdSize.BANNER.getHeight() * density);
        AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.FILL_PARENT,height);
        v.setLayoutParams(params);

     AdRequest adRequest = new AdRequest.Builder().build();
        if (adRequest != null && v != null){
            v.loadAd(adRequest);
         }
    }
    else 
        v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_layout, viewGroup, false);

    RecyclerView.ViewHolder viewHolder = new RecyclerView.ViewHolder(v);
    return viewHolder;
}

这篇关于在 Recyclerview 中嵌入广告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆