ListView的优化(滑动停止才加载数据,首次启动预加载)

接着上篇博客的项目,继续对ListView进行优化。如果ListView 的Item非常复杂,需要加载数据比较多,那么我们在快速滑动时会出现卡顿现象。所以,我们优化ListView,监听ListView的滑动,在ListView滑动时,不加载任何数据,只有滑动停止时才加载手机屏幕内可见的数据,其他地方不加载


个人思路:

1.首先NewAdapter实现 onScrollListener 接口,重写 onScroll和onScrollStateChanged方法。onScroll方法可以提供当滑动停止时ListView中需要加载图片的起始位置(start)和结束(end)位置(当然程序首次启动时,也需要在onScroll中预加载图片)。然后,start—end之间加载图片的url如何获取?答:将List<NewsBean> 中每个数据所对应的picUrl取出来放在一个list.size()大小的静态数组URLS中,之后再从URLS中取出start--end之间的url。那么onScrollStateChanged中,当滑动停止时加载从start到end之间的图片(loadImages(start,end)),否则取消全部的异步加载任务.

2.接下来具体实现loadImages(start ,end )方法:先获得从start到end之间的url,然后根据url获得Bitmap 并判断是否在缓存中存在,如果bitmap不存在,则启动异步任务下载,并将此任务添加到异步任务的集合中。如果存在,则直接设置(但是,不是设置imageView,此处已经作为一个从start到end的整体来进行设置,即需要一个listview,然后根据listView的findViewWithTag(url)来获得listView中url对应的ImageView)

             3.取消所有任务:for(NewsAsyncTask task: mTask){

                            task.cacel(false);

                          }

           4.首次启动预加载  boolean isFirstIn; 在初始化的构造方法中将isFirstIn设置为true,然后在onScroll中加载完一屏,之后将isFirs

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值