Как интегрировать 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);

0 ответов

Другие вопросы по тегам