gpt4 book ai didi

java - RycyclerView android 中的 Facebook 原生广告

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:15 25 4
gpt4 key购买 nike

我发现了类似的问题 Facebook Native ads in recycler view android ,但在与自定义广告集成时遇到了一些问题。

首先,我尝试描述 NativeAdsManager:

  @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
manager = new NativeAdsManager(getActivity(), "892769720837476_892772047503910", 5);
manager.setListener(this);
manager.loadAds();

nativeAd = new NativeAd(getActivity(), "892769720837476_892772047503910");
nativeAd.setAdListener(this);
nativeAd.loadAd();
...
}

然后我将 Native ad 作为参数包含在 RecyclerAdapter 构造函数中:

  adapter = new RecyclerAdapter(foodDataList, getActivity(), nativeAd);

在这个 Class 中,我还实现了 AdListenerNativeAdsManager.Listener 方法:

@Override
public void onError(Ad ad, AdError adError) {

}

@Override
public void onAdLoaded(Ad ad) {
}

@Override
public void onAdClicked(Ad ad) {

}

@Override
public void onAdsLoaded() {

System.out.println("Loaded in fragment");
nativeAd = manager.nextNativeAd();
nativeAd.setAdListener(this);

adapter.notifyDataSetChanged();


}

@Override
public void onAdError(AdError adError) {

}

之后在 RecyclerAdapter 类中:

   public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()) {
...
case 2:
AdditionalHolder new_holder = (AdditionalHolder) holder;
adView = NativeAdView.render(context, nativeAd, NativeAdView.Type.HEIGHT_100);
new_holder.templateContainer.addView(adView);
return;

...
public class AdditionalHolder extends RecyclerView.ViewHolder {
protected LinearLayout templateContainer;

public AdditionalHolder(View view) {
super(view);

templateContainer = (LinearLayout) view.findViewById(R.id.ad_test2);



}
}

所有这些之后,我的带有 RecyclerViewFragment 变得非常“笨重”,每次我都能看到越来越多的广告项目(1 - 从头开始​​,2 -在 10 个项目之后,3 - 在接下来的 10 个项目之后,依此类推)。

我是第一次使用多个RecyclerView holders,觉得这个问题比较难。

为您提供 2 个的要点

https://gist.github.com/burnix/6af8196ee8acf5c8f94e - RecyclerAdapter.class https://gist.github.com/burnix/53dc2ed7446969b78f07 - FragmentList.class

请帮助我解决凸耳问题并根据需要放置 AudienceNetwork

提前致谢!

最佳答案

经过几个小时的头痛,我解决了我的问题。我需要更改 RecyclerView 的构造函数:

  public RecyclerAdapter(List<FoodData> food, Context context, NativeAd  nativeAd, NativeAdsManager manager) {
this.foodDataList = food;
this.context = context;
this.nativeAd = nativeAd;
this.manager = manager;
}

并在onBindViewHolder中实现Native Ads的行为:

  AdditionalHolder new_holder = (AdditionalHolder) holder;
try {
new_holder.templateContainer.removeViewInLayout(adView);
} catch (Exception e) {
e.printStackTrace();
}
nativeAd = manager.nextNativeAd();
try {
adView = NativeAdView.render(context, nativeAd, NativeAdView.Type.HEIGHT_300);
} catch (NullPointerException e) {
e.printStackTrace();
}

new_holder.templateContainer.addView(adView);
new_holder.blank_holder.setVisibility(View.GONE);

但它并没有完全解决我的问题(滚动时出现微滞后),但我希望它仍然对某些人有用。

关于java - RycyclerView android 中的 Facebook 原生广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com