2017-10-10 39 views
0

我正在嘗試將admob原生廣告與recyclerview整合2天。它只顯示一個空格。我記錄的數據表示廣告未能加載錯誤代碼0.facebook原生廣告顯示well.but admob沒有顯示。請任何人都幫助我得到這個廢話。 這裏是我的適配器類。Admob原生廣告不顯示with recyclerview android

公共類ListViewAdapter擴展RecyclerView.Adapter {

// Declare Variables 
Context context; 
LayoutInflater inflater; 
ArrayList<HashMap<String, String>> data; 
HashMap<String, String> resultp = new HashMap<String, String>(); 
private AdView mAdView; 
private static final int DEFAULT_VIEW_TYPE = 1; 
private static final int NATIVE_AD_VIEW_TYPEADMOB = 2; 
private NativeAd nativeAd; 
private NativeAdsManager manager; 
View facebooknativeview; 
View Admobnativeview; 

// Create native UI using the ad metadata. 
ImageView nativeAdIcon; 
TextView nativeAdTitle; 
MediaView nativeAdMedia; 
TextView nativeAdSocialContext; 
TextView nativeAdBody; 
Button nativeAdCallToAction; 


public ListViewAdapter(Context context, 
         ArrayList<HashMap<String, String>> arraylist) { 
    this.context = context; 
    data = arraylist; 



} 


@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    switch (viewType) { 

     case NATIVE_AD_VIEW_TYPEADMOB: 
      Admobnativeview = LayoutInflater.from(parent.getContext()).inflate(R.layout.admob_native_ad, parent, false); 
      return new AdmobExpressNativeViewHolder(Admobnativeview); 

     default: 
      View MenuView = LayoutInflater.from(parent.getContext()).inflate(R.layout.listview_item, parent, false); 
      return new ArticleHolder(MenuView); 


    } 


} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    if (getItemViewType(position) == DEFAULT_VIEW_TYPE) { 

     ArticleHolder articleholder = (ArticleHolder) holder; 
     resultp = data.get(position); 
     articleholder.title.setText(resultp.get(PageFragment.TITLE)); 
     articleholder.link.setText(resultp.get(PageFragment.LINK)); 
     articleholder.summery.setText(resultp.get(PageFragment.SUMMERY)); 
     articleholder.time.setText(resultp.get(PageFragment.TIME)); 

     // Capture position and set results to the ImageView 
     Picasso.with(context).load(resultp.get(PageFragment.IMAGE)).into(articleholder.image); 
     Log.d("all texts", PageFragment.LINK + PageFragment.TITLE); 
    } 
    else if(getItemViewType(position)==NATIVE_AD_VIEW_TYPEADMOB) 
    { 
     AdmobExpressNativeViewHolder adexpress=(AdmobExpressNativeViewHolder)holder; 

     Log.d("admob native", "native starting"); 
     //Load the Ad 
     AdRequest request = new AdRequest.Builder() 
       //.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
       //.addTestDevice("58DA103A6EB90C4260FD9202741F4EB4") 
       .build(); 
     adexpress.adView.loadAd(request); 

    } 
} 


@Override 
public long getItemId(int position) { 
    return 0; 
} 

@Override 
public int getItemCount() { 
    return data.size(); 
} 

@Override 
public int getItemViewType(int position) { 
    if(position != 0 && position % 2 == 0) 
    { 
     return NATIVE_AD_VIEW_TYPEADMOB; 
    } 
    return DEFAULT_VIEW_TYPE; 
} 


public class ArticleHolder extends RecyclerView.ViewHolder 

{ 
    TextView title; 
    TextView link; 
    TextView summery; 
    TextView time; 
    ImageView image; 

    public ArticleHolder(final View itemView) { 
     super(itemView); 
     // Locate the TextViews in listview_item.xml 
     title = (TextView) itemView.findViewById(R.id.title); 
     link = (TextView) itemView.findViewById(R.id.link); 
     summery = (TextView) itemView.findViewById(R.id.summery); 
     time = (TextView) itemView.findViewById(R.id.time); 

     // Locate the ImageView in listview_item.xml 
     image = (ImageView) itemView.findViewById(R.id.image); 

     itemView.setOnClickListener(new View.OnClickListener() { 
      int position = getPosition(); 

      @Override 
      public void onClick(View view) { 

       String stitle = title.getText().toString(); 
       String ssummery = summery.getText().toString(); 
       String stime = time.getText().toString(); 
       String simage = resultp.get(PageFragment.IMAGE); 
       String slink = link.getText().toString(); 
       Intent intent = new Intent(context, SingleItemView.class); 
       intent.putExtra("title", stitle); 
       intent.putExtra("summery", ssummery); 
       intent.putExtra("time", stime); 
       intent.putExtra("image", simage); 
       intent.putExtra("link", slink); 
       itemView.getContext().startActivity(intent); 
      } 
     }); 

    } 

} 



private class AdmobExpressNativeViewHolder extends RecyclerView.ViewHolder { 
    NativeExpressAdView adView; 
    public AdmobExpressNativeViewHolder(View admobnativeview) { 
     super(admobnativeview); 
     adView = (NativeExpressAdView)admobnativeview.findViewById(R.id.adView); 
     adView.setAdListener(new AdListener() { 
      @Override 
      public void onAdLoaded() { 
       super.onAdLoaded(); 
       Log.d("admob native","ad loaded"); 
       notifyDataSetChanged(); 

      } 
      @Override 
      public void onAdOpened() { 
       super.onAdOpened(); 
      } 
      @Override 
      public void onAdLeftApplication() { 
       super.onAdLeftApplication(); 
      } 
      @Override 
      public void onAdFailedToLoad(int i) { 
       super.onAdFailedToLoad(i); 
       Log.d("admob native","ad failed to load"+i); 

      } 
      @Override 
      public void onAdClosed() { 
       super.onAdClosed(); 

      } 
     }); 



    } 
} 

}

回答

0

你應該從谷歌開發者清楚地解釋了有關AdMob原生快RecyclerView一切結帳this視頻。

它建議在MainActivity中加載廣告。

+0

我的主要活動包含viewpager.how我可以通過它發送本機。 ViewPager viewPager =(ViewPager)findViewById(R.id.viewpager); viewPager.setAdapter(new SampleFragmentPagerAdapter(getSupportFragmentManager())); //給PagerSlidingTabStrip的ViewPager PagerSlidingTabStrip tabsStrip =(PagerSlidingTabStrip)findViewById(R.id.tabs); //將視圖傳呼機附加到標籤條 tabsStrip.setViewPager(viewPager); – shakac