如何在我的数据项之间添加原生广告?

时间:2016-08-19 05:37:55

标签: android arraylist android-recyclerview android-arrayadapter recycler-adapter

我创建了一个带有自定义适配器的回收站视图,我希望在项目的每个第3个位置显示原生广告。但无论我写什么,它重叠我的项目,最重要的是,原生广告显示。但我不想要这个。

public class Event_Discover_Combined_Adapter extends RecyclerView.Adapter<Event_Discover_Combined_Adapter.MyViewHolder> {

private Context context;
private ArrayList<Event_Discover_Combined_Details> beanList;
private int itemCount;

public Event_Discover_Combined_Adapter(Context context, ArrayList<Event_Discover_Combined_Details> beanList, int itemCount) {
    this.context = context;
    this.beanList = beanList;
    this.imageLoader = ImageLoader.getInstance();
    this.itemCount = itemCount;

}

//int viewType ;
@Override
public int getItemViewType(int position) {
    if (position % 3 == 0) {
        return R.layout.native_ad_frame_layout;
    } else {
        if (beanList.get(position).getType() == ConstantUrl.TYPE_EVENT) {
            return R.layout.events_item;
        } else {
            return R.layout.discover_item;
        }
    }
}

@Override
public Event_Discover_Combined_Adapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(context).inflate(viewType, parent, false);
    return new MyViewHolder(itemView);
}



public static ImageLoader imageLoader;

@Override
public void onBindViewHolder(final Event_Discover_Combined_Adapter.MyViewHolder holder, int position) {
    Event_Discover_Combined_Details bean = beanList.get(position);

    if (position % 3 == 0) {
        //Ad View
        //For Native Ads
        AdLoader.Builder builder = new AdLoader.Builder(context, context.getResources().getString(R.string.ADMOB_AD_UNIT_ID));

        //if (requestContentAds) {
        builder.forContentAd(new NativeContentAd.OnContentAdLoadedListener() {
            @Override
            public void onContentAdLoaded(NativeContentAd ad) {
                NativeContentAdView adView = (NativeContentAdView) getLayoutInflater()
                        .inflate(R.layout.native_ad_content, null);
                populateContentAdView(ad, adView);
                holder.frameLayout.removeAllViews();
                holder.frameLayout.addView(adView);
            }
        });
        //}

        AdLoader adLoader = builder.withAdListener(new AdListener() {
            @Override
            public void onAdFailedToLoad(int errorCode) {
                Toast.makeText(context, "Failed to load native ad: "
                        + errorCode, Toast.LENGTH_SHORT).show();
            }
        }).build();
        adLoader.loadAd(new AdRequest.Builder().build());

    } else {
        //Normal View
        AppLog.Log("combine", "beanlist" + bean.getType());

        if (bean.getType() == ConstantUrl.TYPE_DISCOVER) {
            if (!bean.getDiscoverDetails().getIcon().equals(""))
                imageLoader.displayImage(bean.getDiscoverDetails().getIcon(),
                        holder.iv_discover_icon);

            holder.tv_author_name.setText(bean.getDiscoverDetails().getAuthor());
            holder.item_discover_descrip.setText(bean.getDiscoverDetails().getDescription());
            holder.tv_discover_heading.setText(bean.getDiscoverDetails().getTitle());

        } else if (bean.getType() == ConstantUrl.TYPE_EVENT) {
            if (!bean.getEventDetails().getIcon().equals(""))
                imageLoader.displayImage(bean.getEventDetails().getIcon(),
                        holder.event_icon);

  /*  holder.item_event_date.setText(bean.getStartDate());
    holder.item_event_time.setText(bean.getStartDate());*/
            try {
                Date date1 = AppUtils.getFormatedDate(bean.getEventDetails().getStartDate());

                String event_time = (String) android.text.format.DateFormat.format("EEEE", date1) + " " + context.getString(R.string.at_text) + " " + new SimpleDateFormat("hh:mm aa").format(date1);

                // holder.item_event_date.setText((String) android.text.format.DateFormat.format("dd", date1));

                holder.item_event_date.setText(event_time);
                holder.item_event_time.setText(event_time);


            } catch (Exception e) {
                e.printStackTrace();
            }

            holder.item_event_heading.setText(bean.getEventDetails().getName());
            holder.item_event_descrip.setText(bean.getEventDetails().getDescription());

        }

    }

}

@Override
public int getItemCount() {
    return itemCount;
}

// int count = 0;

public void setItemCount(int count) {

    this.itemCount = count;

}

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    //For Discover
    public ImageView iv_discover_icon;
    MyTextView tv_author_name;
    MyTextView item_discover_descrip;
    MyTextView_medium tv_discover_heading;

    //For Events
    public ImageView event_icon;
    public MyTextView_medium item_event_time;
    MyTextView item_event_date;
    MyTextView item_event_descrip;
    MyTextView_medium item_event_heading;

    //For Native Ads
    FrameLayout frameLayout;

    public MyViewHolder(final View itemView) {
        super(itemView);

        //For Discover
        iv_discover_icon = (ImageView) itemView.findViewById(R.id.iv_discover_icon);
        tv_author_name = (MyTextView) itemView.findViewById(R.id.tv_author_name);
        tv_discover_heading = (MyTextView_medium) itemView.findViewById(R.id.tv_discover_heading);
        item_discover_descrip = (MyTextView) itemView.findViewById(R.id.item_discover_descrip);
        itemView.setOnClickListener(this);

        //For Events
        event_icon = (ImageView) itemView.findViewById(R.id.event_icon);
        item_event_date = (MyTextView) itemView.findViewById(R.id.item_event_date);
        item_event_time = (MyTextView_medium) itemView.findViewById(R.id.item_event_time);
        item_event_heading = (MyTextView_medium) itemView.findViewById(R.id.item_event_heading);
        item_event_descrip = (MyTextView) itemView.findViewById(R.id.item_event_descrip);
        itemView.setOnClickListener(this);

        //For Native Ads
        frameLayout = (FrameLayout) itemView.findViewById(R.id.fl_adplaceholder);

    }

    @Override
    public void onClick(View v) {
        if ((beanList.get(getAdapterPosition()).getType()) == ConstantUrl.TYPE_EVENT) {
            Intent i = new Intent(context, Events.class);
            i.putExtra("event_details", beanList.get(getAdapterPosition()).getEventDetails());
            context.startActivity(i);
        } else {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(beanList.get(getAdapterPosition()).getDiscoverDetails().getUrl()));
            context.startActivity(intent);
        }
    }
}

private LayoutInflater getLayoutInflater() {
    AppLog.Log("classmate5", "inside_getLayoutInflater" + LayoutInflater.from(context));
    return LayoutInflater.from(context);
}

private void populateContentAdView(NativeContentAd nativeContentAd,
                                   NativeContentAdView adView) {
    AppLog.Log("classmate5", "inside_populateContentAdView");

    adView.setHeadlineView(adView.findViewById(R.id.contentad_headline));
    adView.setImageView(adView.findViewById(R.id.contentad_image));
    adView.setBodyView(adView.findViewById(R.id.contentad_body));
    //adView.setCallToActionView(adView.findViewById(R.id.contentad_call_to_action));
    //adView.setLogoView(adView.findViewById(R.id.contentad_logo));
    //adView.setAdvertiserView(adView.findViewById(R.id.contentad_advertiser));

    // Some assets are guaranteed to be in every NativeContentAd.
    ((MyTextView_medium) adView.getHeadlineView()).setText(nativeContentAd.getHeadline());
    ((MyTextView) adView.getBodyView()).setText(nativeContentAd.getBody());
    //((TextView) adView.getCallToActionView()).setText(nativeContentAd.getCallToAction());
    //((TextView) adView.getAdvertiserView()).setText(nativeContentAd.getAdvertiser());

    List<NativeAd.Image> images = nativeContentAd.getImages();

    if (images.size() > 0) {
        ((ImageView) adView.getImageView()).setImageDrawable(images.get(0).getDrawable());
    }
    // Some aren't guaranteed, however, and should be checked.
    //NativeAd.Image logoImage = nativeContentAd.getLogo();

    /*if (logoImage == null) {
        //adView.getLogoView().setVisibility(View.INVISIBLE);
    } else {
        ((ImageView) adView.getLogoView()).setImageDrawable(logoImage.getDrawable());
        //adView.getLogoView().setVisibility(View.VISIBLE);
    }*/

    // Assign native ad object to the native view.
    adView.setNativeAd(nativeContentAd);
}

}

我想知道在哪里添加支票来隐藏和取消隐藏物品。可以说我有6件物品。因此,在recyclerview中,它应显示9个项目,包括原生广告。 (每第3个位置)。

1 个答案:

答案 0 :(得分:0)

 if (position == 0 || (position + 1) % 3 == 0) { //add your nativeAdd here }