关于此问题有一个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();
答案 0 :(得分:2)
您可以在初始适配器中获取元素的原始位置,如下所示:
position = mAdAdapter.getOriginalPosition(position);
查看以下文章:https://github.com/mopub/mopub-android-sdk/wiki/Native-Ads-with-Recycler-View
正如其所述
如果您在原始适配器上注册任何数据观察者,那么 应该在MoPubRecyclerAdapter上注册它们,这样它们就可以了 接收具有调整的内容项位置的消息。如果你 不要这样做,你收到插入和删除的位置 消息可能不准确。务必检查isAd(位置)并使用 MoPubRecyclerAdapter#getOriginalPosition如果你需要的位置 本地适配器中的项目。