首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
华为云
V2EX  ›  Android

关于 list 中插入广告 item,大夥有没有好的实现思路呢?

  •  
  •   lookforsex · 25 天前用 Android 发布 · 1220 次点击
    现在负责一个新闻 feed,是用 recycler view 实现的,需要接入 Facebook 原生广告。

    一开始思路是每次拿到一部分新闻 list 时,每隔 5 个插入一个空 bean,同时标记为广告 view type, 最后才传给 adapter。

    adapter 方面,就是老样子的在 createviewholder 和 bindviewholder 根据不同的 view type 显示不同的 layout。

    坑在于 Facebook 广告有时加载不出来,然后 feed 上就显示一段空白的广告位,十分尴尬。试过在加载失败时将 AD view holder 设为 view.gone. 但是失败了。

    大佬们有好点的实现方案吗?
    8 回复  |  直到 2018-07-24 20:35:38 +08:00
        1
    iConnect   25 天前
    异步延迟 3 秒加载总够了
        2
    lookforsex   25 天前 via Android
    @iConnect 我好像没说明白,就是广告在加载的时候,还是会占位,白色区域。加载成功还好,加载失败就永远是空白的,就像 feed 中间断了,视觉一眼差
        3
    haaro   25 天前
    推荐 Airbnb 的 Epoxy
        4
    StephenDev   25 天前
    那你为什么不直接先加载出 feed,然后等广告加载出来之后,在插入到中间呢,这样话即使广告失败了,也不影响 feed 啊。recyclerview 完全可以动态增删 item 的啊。
        5
    lookforsex   25 天前 via Android
    @StephenDev 这个有想过,但是效果也不太理想,主要位置的问题,理想效果是自然滑动下去就已经加载好与 feed 融为一体的感觉,而且有些情况下,滑到某位置,在两条新闻中闪现出来一条广告。

    参考了 Instagram 感觉它的广告很自然,每五个一条广告,感觉是有预加载,不知道是否是监听了滑动事件
        6
    iConnect   25 天前
    @lookforsex 如果你的新闻 list 时可以缓存的话,那就把广告 item 也提前缓存;如果新闻 list 是实时查询出来的,可以考虑异步缓存一下广告 item,先不要占位;如果空白框是广告商那边的问题,那就直接请对方考虑网速慢的情况,不要先渲染 dom 高度,这个你没法控制的
        7
    StephenDev   25 天前
    @lookforsex 那你试下在 recyclerview 的 create 或者 bind 的时候加一个判断。
    比如 create 的时候,if(pos>0&&adList!=null&&pos % 5 ==0){return adViewHolder}
    这样的话就可以在有广告的情况下,每隔 5 个 item 出现一个广告,这样应该也不用动态的去自己增删了。
        8
    GoodRainChen   20 天前
    先加载,再插入。notifyItemAdd
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   2232 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 11:31 · PVG 19:31 · LAX 04:31 · JFK 07:31
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1