MoPub Native Ad与Android中的viewholder模式集成

时间:2015-08-28 10:57:53

标签: android adapter android-viewholder mopub

关于此问题有一个post。但它并不那么详细。

我正在使用一个带有viewholder的网格适配器(从ArrayAdapter扩展)。我用MoPubAdAdapter包装它。广告显示在gridview中,但是当我点击某个项目时,它会给我一个错误的(实际上,后来有一两个项目)。 我认为这是因为观看者。当时屏幕上没有的广告项目消失,项目的定位得到修复,但只要广告出现在屏幕上,定位就会再次被破坏。

我该如何解决?我是否必须进行自定义集成?如果是这样,我该怎么办?有没有关于它的文件?

我将此代码用于MoPub集成:

// Set up a ViewBinder and MoPubNativeAdRenderer as above.
ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_ad_layout)
        .mainImageId(R.id.native_ad_main_image)
        .iconImageId(R.id.native_ad_icon_image)
        .titleId(R.id.native_ad_title)
        .build();

// Set up the positioning behavior your ads should have.
MoPubNativeAdPositioning.MoPubServerPositioning adPositioning =
        MoPubNativeAdPositioning.serverPositioning();
MoPubNativeAdRenderer adRenderer = new MoPubNativeAdRenderer(viewBinder);

// Set up the MoPubAdAdapter
mAdAdapter = new MoPubAdAdapter(mContext, adapter, adPositioning);
mAdAdapter.registerAdRenderer(adRenderer);
loadAds();

1 个答案:

答案 0 :(得分:2)

您可以在初始适配器中获取元素的原始位置,如下所示:

position = mAdAdapter.getOriginalPosition(position);

查看以下文章:https://github.com/mopub/mopub-android-sdk/wiki/Native-Ads-with-Recycler-View

正如其所述

  

如果您在原始适配器上注册任何数据观察者,那么   应该在MoPubRecyclerAdapter上注册它们,这样它们就可以了   接收具有调整的内容项位置的消息。如果你   不要这样做,你收到插入和删除的位置   消息可能不准确。务必检查isAd(位置)并使用   MoPubRecyclerAdapter#getOriginalPosition如果你需要的位置   本地适配器中的项目。