layabox list渲染优化

本文探讨了在大量list存在时,优化渲染过程的方法,包括先加载图片再渲染其他数据,以及在listitem渲染时如何避免空cell引起的UI问题。提出了在item中封装setSkin方法,以及在滑动list时预加载和重置item特效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面已经说过一种方法了,就是先加载图片,再渲染list,但是对于存在较多list时,这种方法存在问题,

用户虽然能迅速看到界面,这比只能看到加载时的黑色界面体验要好,但是,用户打开界面后,会看到很多的listitem

没有数据进行渲染,看到的是UI文件中的界面。

进一步优化的方法是,渲染item时选择先渲染图片,至于其他数据,走之前的渲染流程。

具体做法是,

1.在item中封装公有方法setSkin

2.在list所在类的onreload方法中,获取item,然后调用item中的setSkin方法

注意,这里有坑

1.getCell之后要用 as强制转换一次类型为待渲染的item类型

2.getCell的值可能为null,导致报错,所以要判断是否为null,不为null才能调用setSkin

 

list渲染补充:(2018-10-29)

前面说过getCell的值可能为空,那么,这样就会导致通过getCell充值list中的item时,为null的那些cell不会被重置,

举个例子,list中可见的有4个item,但是list总共有6个item,只有当前可见的cell才能通过getCell获取,需求时当前选中的item加特效突出显示,切换点击下一个item,当前高亮显示的特效清楚,下一个被点击的item加高亮特效,如果用户点击第一个item,然后滑动到最后一个item,点击最后一个item,这时候,通过getCell重置时,由于第一个item的getCell的返回值为null,不会执行重置方法,强制执行,值为null,会报错,当用户再滑动回第一个item时,会发现第一个item的高粱特效仍然存在,并没有被清除掉。

解决方法:除了需要在panel中执行item中的public方法重置高亮特效,还需要在item中set dataSource时直接执行一遍重置高亮特效。因为在滑动list,某个item将要出现时,会进行一次渲染。这样就可以重置了,实际上,list中的渲染并不是一次渲染完成的,当list较多,可视区以外存在item时,只会渲染可视区外的第一个item,虽然用户看上去像是一次渲染完成。这样做的优点是性能较好,按需加载,预加载,而不至于页面有较多item会感觉卡顿。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值