Как интегрировать FB Native Ads в ListView?
Я пытаюсь интегрировать нативную рекламу Facebook в элементы listView, чтобы пользователь мог видеть нативную рекламу каждые 4–5 элементов, но она не позволяет мне загружать рекламу в элементах listView, она всегда вылетает из приложения и сообщает мне что-то имеет значение null, я пытался что-либо предотвратить это null и ничего не получил, ниже вы можете увидеть мой последний код, но я попытался поместить весь код в getView без дополнительного метода, также я попытался в asycTask, в Handler&runnable, и ничего не работало Я не мог предотвратить это нуль и не мог найти то, что заставило это быть нуль.
Я бы очень хотел любую помощь / предложение, которое я мог бы получить, спасибо:)
Вот мой код:
.....getView(...){
....
convertView = layoutInflater.inflate(R.layout.list_view_item, null);
showNativeAdsInListView(convertView);
return convertView;
}
....
private void showNativeAdsInListView(final View view) {
nativeAd = new NativeAd(this, "1914503258620432_1914538135283611");
nativeAd.setAdListener(new AdListener() {
@Override
public void onError(Ad ad, AdError error) {
// Ad error callback
}
@Override
public void onAdLoaded(Ad ad) {
// Ad loaded callback
if (nativeAd != null) {
nativeAd.unregisterView();
}
// Add the Ad view into the ad container.
LinearLayout nativeAdContainer = (LinearLayout) view.findViewById(R.id.native_ad_container);
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
// Inflate the Ad view. The layout referenced should be the one you created in the last step.
LinearLayoutAdView = (LinearLayout) inflater.inflate(R.layout.native_ad_layout, nativeAdContainer, false);
nativeAdContainer.addView(LinearLayoutAdView);
// Create native UI using the ad metadata.
ImageView nativeAdIcon = (ImageView) LinearLayoutAdView.findViewById(R.id.native_ad_icon);
TextView nativeAdTitle = (TextView) LinearLayoutAdView.findViewById(R.id.native_ad_title);
MediaView nativeAdMedia = (MediaView) LinearLayoutAdView.findViewById(R.id.native_ad_media);
TextView nativeAdSocialContext = (TextView) LinearLayoutAdView.findViewById(R.id.native_ad_social_context);
TextView nativeAdBody = (TextView) LinearLayoutAdView.findViewById(R.id.native_ad_body);
Button nativeAdCallToAction = (Button) LinearLayoutAdView.findViewById(R.id.native_ad_call_to_action);
// Set the Text.
nativeAdTitle.setText(nativeAd.getAdTitle());
nativeAdSocialContext.setText(nativeAd.getAdSocialContext());
nativeAdBody.setText(nativeAd.getAdBody());
nativeAdCallToAction.setText(nativeAd.getAdCallToAction());
// Download and display the ad icon.
NativeAd.Image adIcon = nativeAd.getAdIcon();
NativeAd.downloadAndDisplayImage(adIcon, nativeAdIcon);
// Download and display the cover image.
nativeAdMedia.setNativeAd(nativeAd);
// Add the AdChoices icon
LinearLayout adChoicesContainer = (LinearLayout) findViewById(R.id.ad_choices_container);
AdChoicesView adChoicesView = new AdChoicesView(MainActivity.this, nativeAd, true);
adChoicesContainer.addView(adChoicesView);
// Register the Title and CTA button to listen for clicks.
List<View> clickableViews = new ArrayList<>();
clickableViews.add(nativeAdTitle);
clickableViews.add(nativeAdCallToAction);
nativeAd.registerViewForInteraction(nativeAdContainer,clickableViews);
}
@Override
public void onAdClicked(Ad ad) {
// Ad clicked callback
}
@Override
public void onLoggingImpression(Ad ad) {
// Ad impression logged callback
}
});
// Request an ad
nativeAd.loadAd(NativeAd.MediaCacheFlag.ALL);
}
Вот ошибка: (ничто не исправляет эту ошибку)
java.lang.NullPointerException: Attempt to read from field 'com.facebook.ads.internal.n.f com.facebook.ads.NativeAd$Image.a' on a null object reference
и это указывает на эту строку в коде выше:
NativeAd.downloadAndDisplayImage(adIcon, nativeAdIcon);