2015-07-21 81 views
0

在我的代碼中,我有這個限制。如果inmobi廣告reqeust是成功顯示inmoby廣告,如果失敗顯示Google廣告。在適配器中充氣視圖

這裏是我的代碼

@Override 
    public View getView(int positionInList, View convertView, final ViewGroup parent) { 
    if (adsFreq != 0 && positionInList > 0 && (positionInList + 1) % adsFreq == 0) { 
     mConvertView = convertView; 
     if (mConvertView == null) { 
     mConvertView = vi.inflate(R.layout.banner_inmobi_container,parent,false); 
     } 
     IMBanner bannerAdView = (IMBanner)mConvertView.findViewById(R.id.bannerView); 
     AdUtils.getInstance().loadInMobiBanner(bannerAdView, new IAdListener() { 
     @Override 
     public void onFail() { 
      mConvertView = vi.inflate(R.layout.banner_container, parent, false); 
      AdView mAdView = (AdView) mConvertView.findViewById(R.id.adView); 
      mAdView.loadAd(AdUtils.getAdmobRequestForCurrentUser()); 
     } 
     }); 
     return mConvertView; 
    } 
} 

當的InMobi請求成功是inmob廣告節目,但是當我請求失敗GoogleAds現在顯示在所有。

對於測試,我把這個代碼放在一起,它的工作原理也是如此。

mConvertView = vi.inflate(R.layout.banner_container, parent, false); 
      AdView mAdView = (AdView) mConvertView.findViewById(R.id.adView); 
      mAdView.loadAd(AdUtils.getAdmobRequestForCurrentUser()); 

那麼當我加載失敗的谷歌廣告沒有顯示時,我做錯了什麼?

回答

1

您可以嘗試做這種方式:

private AdRequest adRequest; 

    adRequest = new AdRequest.Builder().build(); 

    IMBanner bannerAdView = (IMBanner)mConvertView.findViewById(R.id.bannerView); 
    AdView mAdView = (AdView) mConvertView.findViewById(R.id.adView); 
    adRequest = new AdRequest.Builder().build(); 
    AdUtils.getInstance().loadInMobiBanner(bannerAdView, new IAdListener() { 
    @Override 
    public void onFail() { 
     mAdView.loadAd(adRequest); 
    } 
    }); 
+0

謝謝你的回答。但它不是我的問題......我的問題是它現在顯示時調用onFailed – pmb

0

這不是一個很好的做法,運行它裏面getView。每次滾動時,getView()方法都會頻繁運行。相反,在getView()之外運行它並將結果附加到布爾變量中。

getView()的後面,您可以通過該布爾變量來確定要膨脹顯示的視圖,還是不顯示任何內容。