这篇博客教大家如何利用 convertView 以及 viewHolder(static) 改善 ListView 卡顿情况;但是在 ListView 加载大量复杂布局和图片的时候,即使使用了 convertView 和 viewHolder,ListView还是卡顿,本文主要讨论了如何在加载复杂 list_item 同时保证 ListView 流畅性。
创新互联公司始终坚持【策划先行,效果至上】的经营理念,通过多达10年累计超上千家客户的网站建设总结了一套系统有效的推广解决方案,现已广泛运用于各行各业的客户,其中包括:玻璃隔断等企业,备受客户赞扬。
核心思想是
监听滑动据加载,异步加载数据。
getView 函数一定不能耗时,有耗时任务要异步加载。
主要的方法:
先判断当前 ListView 的状态,只有 ListView 停止滑动才开启新线程加载数据,其他状态均忽略。
使用 getFirstVisiblePosition 和 getLastVisiblePosition 方法来显示 item。
耗时任务一定不要在 getView 方法中进行,***异步进行。
具体代码如下:
- //判断listView状态
- AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {// ListView
- // 触摸事件
- public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
- }
- 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。
名称栏目:AndroidListView优化最佳实践
URL标题:http://www.csdahua.cn/qtweb/news38/107088.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网