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

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

  •  
  •   lookforsex · 2018-07-19 22:31:15 +08:00 via Android · 10001 次点击
    这是一个创建于 2352 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在负责一个新闻 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
    iConnect
        1
    iConnect  
       2018-07-19 22:38:46 +08:00
    异步延迟 3 秒加载总够了
    lookforsex
        2
    lookforsex  
    OP
       2018-07-19 22:46:38 +08:00 via Android
    @iConnect 我好像没说明白,就是广告在加载的时候,还是会占位,白色区域。加载成功还好,加载失败就永远是空白的,就像 feed 中间断了,视觉一眼差
    haaro
        3
    haaro  
       2018-07-19 22:48:28 +08:00
    推荐 Airbnb 的 Epoxy
    StephenDev
        4
    StephenDev  
       2018-07-19 22:52:24 +08:00
    那你为什么不直接先加载出 feed,然后等广告加载出来之后,在插入到中间呢,这样话即使广告失败了,也不影响 feed 啊。recyclerview 完全可以动态增删 item 的啊。
    lookforsex
        5
    lookforsex  
    OP
       2018-07-19 23:02:08 +08:00 via Android
    @StephenDev 这个有想过,但是效果也不太理想,主要位置的问题,理想效果是自然滑动下去就已经加载好与 feed 融为一体的感觉,而且有些情况下,滑到某位置,在两条新闻中闪现出来一条广告。

    参考了 Instagram 感觉它的广告很自然,每五个一条广告,感觉是有预加载,不知道是否是监听了滑动事件
    iConnect
        6
    iConnect  
       2018-07-19 23:23:05 +08:00
    @lookforsex 如果你的新闻 list 时可以缓存的话,那就把广告 item 也提前缓存;如果新闻 list 是实时查询出来的,可以考虑异步缓存一下广告 item,先不要占位;如果空白框是广告商那边的问题,那就直接请对方考虑网速慢的情况,不要先渲染 dom 高度,这个你没法控制的
    StephenDev
        7
    StephenDev  
       2018-07-20 09:37:21 +08:00
    @lookforsex 那你试下在 recyclerview 的 create 或者 bind 的时候加一个判断。
    比如 create 的时候,if(pos>0&&adList!=null&&pos % 5 ==0){return adViewHolder}
    这样的话就可以在有广告的情况下,每隔 5 个 item 出现一个广告,这样应该也不用动态的去自己增删了。
    GoodRainChen
        8
    GoodRainChen  
       2018-07-24 20:35:38 +08:00
    先加载,再插入。notifyItemAdd
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:40 · PVG 19:40 · LAX 03:40 · JFK 06:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.