Recyclerview 往回滑怎么停止重复加载图片 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jimjay
V2EX    Android

Recyclerview 往回滑怎么停止重复加载图片

  •  
  •   Jimjay 2018-02-04 22:44:30 +08:00 16540 次点击
    这是一个创建于 2883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初入 android 的萌新向大神请教一下,弄了一个水平滑动的 recyclerview 问题是加载过的图片,往回之后又看过它重新加载了,怎么让它不加载啊 我直接上部分代码,直观点,用的 databinding 加载数据和 adapter

    @BindingAdapter({"bind:imageUrl","bind:error"}) public static void ladImage(ImageView view, String url, Drawable error){ Glide.with(view.getContext()).load(UriUtil.completeImgUrl(url)).error(error).into(view); } @BindingAdapter("bind:data") public static void setData(RecyclerView recyclerView, List<ItemData> data){ setHorizontalRVdata(recyclerView, data); } 下面是 adapter 部分 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { B binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), getLayoutId(viewType), parent, false); return new BaseViewHolder(binding.getRoot()); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { B binding = DataBindingUtil.getBinding(holder.itemView); onBindItem(binding, items.get(position)); } 
    11 条回复    2018-02-09 17:48:49 +08:00
    sty
        1
    sty  
       2018-02-04 23:42:01 +08:00 via Android
    如果你有 10000 个条目,不回收吗
    CFO
        2
    CFO  
       2018-02-05 01:34:49 +08:00 via Android
    你知道 recycler 是什么意思吗?
    lcorange
        3
    lcorange  
       2018-02-05 01:47:44 +08:00   1
    recycle 被回收是无法避免的,要不内存早晚爆掉,如果为了体验好些,可以多缓存几个页面,回收的慢些就好了,但是要控制好大小,小心 oom
    recyclerView.setItemViewCacheSize(10);
    0x8192dd
        4
    0x8192dd  
       2018-02-05 01:54:22 +08:00 via Android   1
    重新加载是不可避免的,也是应该的,如果重新加载图片在 UI 上显示效果不好或者有很明显的加载过程,你应该考虑的是优化加载速度比如降低图片大小,而不是不加载
    gavin6liu
        5
    gavin6liu  
       2018-02-05 17:08:28 +08:00
    看代码,没啥问题啊,Glide 会自动缓存图片到内存可以直接显示,你是想 Glide 加载已经存在的图片,没有 transition 动画?
    Jimjay
        6
    Jimjay  
    OP
       2018-02-05 17:18:37 +08:00 via Android
    @tsunamibad 在图片的大小方面,我已经选择最小到能接受的程度了,能否具体讲一下优化速度的方法,而且因为我没有设置 placeholder, 还有 image view 下面还有 text views, 每次回滑 text view 都被顶到最上,重新加载后又顶下来,视觉效果不好,我想有没有解决的办法,具体参考案例 Google play 商店,我试过,它没有我这种情况,不知是否用 recyclerview 实现的
    Jimjay
        7
    Jimjay  
    OP
       2018-02-05 17:22:22 +08:00 via Android
    @gavin6liu 我的困扰是,image view 下面还有一个 textview 作标题,组成一个 item, 然后我每次往回滑,它明明加载过的图片还要重新加载一遍,然后下面标题别顶上去,等图片加载完又恢复原位,而这个视觉体验并不好,有没有解决的办法
    Jimjay
        8
    Jimjay  
    OP
       2018-02-05 17:26:35 +08:00 via Android
    @lcorange 不知 glide 是否提供修改回收数量的接口,不要让 items 出了屏幕就回收
    allan1st
        9
    allan1st  
       2018-02-05 18:48:11 +08:00
    @Jimjay 第一次加载成功以后把图像的宽高比存起来
    V2exUser
        10
    V2exUser  
       2018-02-09 17:47:03 +08:00
    recy 就是拿已经出了屏幕的 itemView 复用啊,再进入屏幕当然要重新填值。
    V2exUser
        11
    V2exUser  
       2018-02-09 17:48:49 +08:00
    真要不复用的话,外面放一个水平的 scrollview,这样内部的 recy 的 item 会一次性出来。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2653 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 09:07 PVG 17:07 LAX 01:07 JFK 04:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86