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