2016-12-10 8 views
0

私は、オーディエンスネットワークを使用してアンドロイド上にネイティブ広告を作成しています。問題は、広告が表示されているがクリックしていないことです。広告をクリックして登録したビューのいずれかをクリックすると、何も起こりません。私は、カスタムアダプタでカスタムリストビューに広告をロードしています:Facebookネイティブ広告はクリックしません:Android

public class StaticListView extends ListView { 

public StaticListView(Context context) { 
    super(context); 
} 

public StaticListView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public StaticListView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

@Override 
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST)); 
    getLayoutParams().height = getMeasuredHeight(); 
} 

}

そして最後に、ここで私の部分である:ここでは

static StaticListView turning_up_lv; //My custom listview 

private static void showNativeAd() { 
    nativeAd = new NativeAd(context, AD_ID); 
    nativeAd.setAdListener(new AdListener() { 

     @Override 
     public void onError(Ad ad, AdError error) { 
     } 

     @Override 
     public void onAdLoaded(Ad ad) { 
      if (ad != nativeAd) { 
       return; 
      } 

      isAdLoaded = true; 
      if ((turning_up_lv.getAdapter()) != null && turning_up_lv.getCount() > 3) { 
       ((MyAdapter) turning_up_lv.getAdapter()).addNativeAd(ad, false); 
      } 
     } 

     @Override 
     public void onAdClicked(Ad ad) { 

     } 
    }); 

    nativeAd.loadAd(NativeAd.MediaCacheFlag.ALL); 
} 

は、カスタムリストビューのコードです広告をアダプターにロードします。

private void inflateAd(final NativeAd nativeAd, MyViewHolder holder, final View view) { 
     // Create native UI using the ad metadata. 
// Setting the Text 
    holder.time_tv.setText("Sponsored"); 
    holder.native_ad_social_context.setText(nativeAd.getAdSocialContext()); 
    holder.native_ad_call_to_action.setText(nativeAd.getAdCallToAction()); 
    holder.native_ad_call_to_action.setVisibility(View.VISIBLE); 
    holder.un_tu.setText(nativeAd.getAdTitle()); 
    holder.comment_or_caption_tv.setText(nativeAd.getAdBody()); 

    // Downloading and setting the ad icon. 
    NativeAd.Image adIcon = nativeAd.getAdIcon(); 
    NativeAd.downloadAndDisplayImage(adIcon, holder.ad_iv); 


    // Downloading and setting the cover image. 
    NativeAd.Image adCoverImage = nativeAd.getAdCoverImage(); 
    int bannerWidth = adCoverImage.getWidth(); 
    int bannerHeight = adCoverImage.getHeight(); 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    int mediaWidth = holder.native_ad_media.getWidth() > 0 ? holder.native_ad_media.getWidth() : metrics.widthPixels; 
    holder.native_ad_media.setLayoutParams(new LinearLayout.LayoutParams(
      mediaWidth, 
      Math.min(
        (int) (((double) mediaWidth/(double) bannerWidth) * bannerHeight), 
        metrics.heightPixels/3))); 
    holder.native_ad_media.setAutoplay(AdSettings.isVideoAutoplay()); 

    holder.native_ad_media.setNativeAd(nativeAd); 

    addLoadedToMediaView = true; 

    final ArrayList<View> clickableViews = new ArrayList<>(); 
    clickableViews.add(holder.native_ad_media); 
    clickableViews.add(holder.native_ad_social_context); 
    clickableViews.add(holder.native_ad_call_to_action); 

    nativeAd.registerViewForInteraction(view, clickableViews); 
} 
+0

私は同様の問題に直面している、あなたの問題の解決策を見つけましたか? – Ezio

+0

私はトリックをやめたstaticlistviewの代わりにrecyclerviewを使用しました。 –

+0

私はすでにリサイクラビューを使用していますが、広告はいくつかの場所でクリック可能ではありません – Ezio

答えて

1

は、UI要素のためのビューのホルダーを使用して実際にする前に広告をプリフェッチ:アダプタはここ

@Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 
    View row = convertView; 
    MyViewHolder holder; 

    if (row == null) { 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = inflater.inflate(R.layout.turning_up_item, parent, 
       false); 
     holder = new MyViewHolder(row); 
     row.setTag(holder); 
    } else { 
     holder = (MyViewHolder) row.getTag(); 
    } 

    if (position == AD_INDEX && ad != null) { 
     inflateAd((NativeAd) ad, holder, row); 
    } else { 

     //Load other listview items 
     } 
} 

が広告を膨張させるためのコードである限りがあるため、私はいくつかの無関係な部分を削除したことに注意してください彼らはトリックをしたレンダリング

関連する問題