首页 > 代码库 > 进一步优化ListView
进一步优化ListView
之前我已经分享过一篇:viewHodler的通用写法,就是专门用来优化listview的加载的,但是对于复杂的布局,我们还需要在listview滑动和不滑动时进行自己的处理,今天我看到一篇文章就是讲这方面的,虽然不是很完善,但思想已经对了。
主要思想:
- 监听滑动据加载,异步加载数据
- 避免同一个视图重复加载
- getView 函数一定不能耗时,有耗时任务要异步加载
实现方法:
先判断当前 ListView 的状态,只有 ListView 停止滑动或缓慢滑动的时候才开启新线程加载数据,其他状态(快速滑动listview)均忽略加载。
使用 getFirstVisiblePosition 和 getLastVisiblePosition 方法来显示 item。
耗时任务一定不要在 getView 方法中进行,最好异步进行。
下面的方法仅仅是起一个说明的作用,实际中还需要判断list的滑动速度什么的
import android.widget.AbsListView;public class d { // 1. 判断listView状态 AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() { // 触摸事件 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO:init } public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case AbsListView.OnScrollListener.SCROLL_STATE_FLING:// 滑动状态 threadFlag = false; break; case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:// 停止 threadFlag = true; startThread();// 开启新线程,加载数据 break; case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 触摸listView threadFlag = false; break; default: // Toast.makeText(contextt, "default", // Toast.LENGTH_SHORT).show(); break; } } };}
进一步优化ListView
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。