Skip to content

Google Ads and Facebook Ads not displaying in the cards #2

Description

@SkyTreasure

Hi,

I am trying to integrate Ads inside the cards, example every 5th card to show the ads. But the view is not rendering, any idea what might be going wrong.

I will post my Adapter code here.
`public class MyCardAdapter extends BaseAdapter {

private Context mContext;
private LayoutInflater mInflater;
private List<UserModel> mList;
private final int ADS = 0;
private final int MYVIEW = 1;

public MyCardAdapter(Context context, List<UserModel> list) {
    mInflater = LayoutInflater.from(context);
    this.mList = list;
    this.mContext = context;
}

@Override
public int getViewTypeCount() {
    return 2;
}

@Override
public int getItemViewType(int position) {
    if (mList.get(position).isAds) {
        return ADS;

    } else {
        return MYVIEW;
    }
}

@Override
public int getCount() {
    return mList.size();
}

@Override
public Object getItem(int position) {

    return mList.get(position);
}



@Override
public long getItemId(int position) {
    return mList.get(position).hashCode();
}



@Override
public View getView(int position, View convertView, ViewGroup parent) {
    int type = getItemViewType(position);

    if (mList.get(position).isAds) {
        convertView = mInflater.inflate(R.layout.swing_fling_fbads_item, parent, false);
        final FbAdsViewHilder fbAdsViewHolder = new FbAdsViewHilder(convertView);
        

        fbAdsViewHolder.nativeAd = new NativeAd(mContext, "130953020987022_138050996943891");
        fbAdsViewHolder.nativeAd.setAdListener(new com.facebook.ads.AdListener() {

            @Override
            public void onError(Ad ad, AdError error) {
                // Ad error callback
                Log.e("", "");
            }

            @Override
            public void onAdLoaded(Ad ad) {


                fbAdsViewHolder.nativeAdContainer.addView(fbAdsViewHolder.adView);

                // Create native UI using the ad metadata.
                ImageView nativeAdIcon = (ImageView) fbAdsViewHolder.adView.findViewById(R.id.native_ad_icon);
                TextView nativeAdTitle = (TextView) fbAdsViewHolder.adView.findViewById(R.id.native_ad_title);
                MediaView nativeAdMedia = (MediaView) fbAdsViewHolder.adView.findViewById(R.id.native_ad_media);
                TextView nativeAdSocialContext = (TextView) fbAdsViewHolder.adView.findViewById(R.id
                        .native_ad_social_context);
                TextView nativeAdBody = (TextView) fbAdsViewHolder.adView.findViewById(R.id.native_ad_body);
                Button nativeAdCallToAction = (Button) fbAdsViewHolder.adView.findViewById(R.id
                        .native_ad_call_to_action);

                // Set the Text.
                nativeAdTitle.setText(fbAdsViewHolder.nativeAd.getAdTitle());
                nativeAdSocialContext.setText(fbAdsViewHolder.nativeAd.getAdSocialContext());
                nativeAdBody.setText(fbAdsViewHolder.nativeAd.getAdBody());
                nativeAdCallToAction.setText(fbAdsViewHolder.nativeAd.getAdCallToAction());

                // Download and display the ad icon.
                NativeAd.Image adIcon = fbAdsViewHolder.nativeAd.getAdIcon();
                NativeAd.downloadAndDisplayImage(adIcon, nativeAdIcon);

                // Download and display the cover image.
                nativeAdMedia.setNativeAd(fbAdsViewHolder.nativeAd);

                // Add the AdChoices icon

                AdChoicesView adChoicesView = new AdChoicesView(mContext, fbAdsViewHolder.nativeAd, true);
                fbAdsViewHolder.adChoicesContainer.addView(adChoicesView);

                // Register the Title and CTA button to listen for clicks.
                List<View> clickableViews = new ArrayList<>();
                clickableViews.add(nativeAdTitle);
                clickableViews.add(nativeAdCallToAction);
                fbAdsViewHolder.nativeAd.registerViewForInteraction(fbAdsViewHolder.nativeAdContainer, clickableViews);
            }

            @Override
            public void onAdClicked(Ad ad) {
                // Ad clicked callback
                Log.e("", "");
            }

            @Override
            public void onLoggingImpression(Ad ad) {
                // On logging impression callback
                Log.e("", "");
            }
        });

        // Request an ad
        fbAdsViewHolder.nativeAd.loadAd();
        return convertView;

    } else {
        // if (convertView == null) {
        convertView = mInflater.inflate(R.layout.swipe_fling_item, parent, false);
        ViewHolder holder = new ViewHolder(convertView);
            /*    convertView.setTag(holder);
            }
            ViewHolder holder = (ViewHolder) convertView.getTag();*/ 

        UserModel user = ((UserModel) getItem(position));
        holder.user = user;
        holder.tvTitle.setText(user.title);
        holder.tvDesc.setText(user.description);
         
        return convertView;


    }


}


static class ViewHolder implements View.OnClickListener {
    CardLayout cardLayout;
    CardImageView img;
    TextView tvTitle, tvDesc; 
    UserModel user;


    ViewHolder(View rootView) {
        cardLayout = (CardLayout) rootView;
        img = cardLayout.findViewById(R.id.iv_main);
        tvTitle = cardLayout.findViewById(R.id.tv_title);
        tvDesc = cardLayout.findViewById(R.id.tv_desc); 
    }

    @Override
    public String toString() {
        return "[Card:" + tvTitle.getText() + "]";
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.ll_bottom_left:
                CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
                CustomTabActivityHelper.openCustomTab(
                        (AppCompatActivity) cardLayout.getContext(), customTabsIntent, Uri.parse(article.link), new WebviewFallback());
                break;
        }
    }
}



static class FbAdsViewHilder {
    private NativeAd nativeAd;
    private LinearLayout nativeAdContainer;
    private LinearLayout adView;
    LinearLayout adChoicesContainer;

    FbAdsViewHilder(View rootView) {
        nativeAdContainer = (LinearLayout) rootView.findViewById(R.id.native_ad_container);
        LayoutInflater inflater = LayoutInflater.from(rootView.getContext());
        adView = (LinearLayout) inflater.inflate(R.layout.native_ad_layout,
                nativeAdContainer, false);
        adChoicesContainer = (LinearLayout) adView.findViewById(R.id
                .ad_choices_container);
    }

}

}
`

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions