ListView中 局部刷新Item 实现下载进度条局部更新
2014-06-19 13:55
519 查看
问题引入:
demo中需做个下载个下载管理界面。同时只能下载一个任务,但是下载队列可以有多个下载任务。当更新当前正在下载的任务的时候,使用 notifyDataSetChanged();方法会使整个页面都会刷新。
而且进度更新比较频繁,这就造成了内存的消耗和页面卡顿(在进度更新很频繁的情况),笔者甚至出现了卡住页面无法进行操作的情况。
所以想到了能不能局部刷新某个Item。也查了下资料,问题解决。
解决思路:
通过listview.getFirstVisiblePosition()方法获取到显示的item的首个位置 ,再根据position, 计算出view的位置。获取到具体的view后,对view进行操作,就能够实现局部刷新了。关键代码:
public void updateView(int itemIndex) {//得到第一个可显示控件的位置,
int visiblePosition = mListView.getFirstVisiblePosition();
//只有当要更新的view在可见的位置时才更新,不可见时,跳过不更新
if (itemIndex - visiblePosition >= 0) {
//得到要更新的item的view
View view = mListView.getChildAt(itemIndex - visiblePosition);
//从view中取得holder
ViewHolder holder = (ViewHolder) view.getTag();
HashMap<String, Object> item = data.get(itemIndex);
//获取到具体的控件,
holder.name = (TextView) view.findViewById(R.id.name);
holder.process = (ProcessBar) view.findViewById(R.id.process);
.......
//对控件进行操作
holder.process.setMax(item.get("max"));
holder.process.setProgress(item.get("progress"));
......
}
}
相关文章推荐
- 【Android TV端】RecyclewView中局部更新(实现item下载进度实时更新)
- 用EventBus传值,来实现局部更新listview的item
- ListView实现Item局部刷新
- ListView实现item局部刷新
- ListView实现Item局部刷新
- Android开发之ListView实现Item局部刷新
- Android奇巧:ListView实现Item局部刷新
- android ListView局部刷新和模拟应用下载 ListView 进度条下载 ListView多个下载
- 通过ContentObserver监听数据库某表的增加、删除、更新动作,实现listView异步单项Item的刷新
- Android开发之ListView实现Item局部刷新
- 局部刷新ListView,实现点赞功能
- ListView GridView 自定义ViewGroup的单个item 刷新 和 单个item中的局部元素刷新
- 关于局部更新listview的问题(只更新某个item)
- android listview局部刷新和模拟应用下载
- ListView中Item控件监听及异步刷新的实现
- 实现 异步任务类 下载更新进度条,显示百分比
- listview中实现item播放音乐的进度显示
- ListView在不刷新整个界面下,单独更新item
- android listview局部刷新和模拟应用下载
- 自定义ListView实现底部动画更新item