ListView中 局部刷新Item 实现下载进度条局部更新
来源:互联网 发布:js 比较数值相等 编辑:程序博客网 时间:2024/05/21 09:19
问题引入:
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"));
- ......
- }
- }
0 2
- ListView中 局部刷新Item 实现下载进度条局部更新
- ListView实现item局部刷新
- ListView实现Item局部刷新
- ListView实现Item局部刷新
- Android奇巧:ListView实现Item局部刷新
- Android开发之ListView实现Item局部刷新
- ListView实现局部更新
- android ListView局部刷新和模拟应用下载 ListView 进度条下载 ListView多个下载
- 在ListView控件的item布局中,进行item中控件的局部刷新。
- (listview局部更新)在activity中获取listview的item子项view
- 再说Android RecyclerView局部刷新那个坑——RecyclerView中payload参数实现刷新一个item的局部
- Android中listview中editText局部刷新
- 局部刷新ListView,实现点赞功能
- 关于listView、gridView的item的局部刷新
- Android ListView 局部刷新
- listView局部刷新
- ListView局部刷新
- ListView局部刷新
- iOS Dev (57) 解决UITableView重绘导致重叠的问题
- web-jsp 页面路径
- flex4 中用ArrayCollection来当作tree的数据源示例
- iOS Dev (58) 打包发布缺少57x57、72x72图标问题
- vs2010编译错误fatal error C1902: 程序数据库管理器不匹配;请检查安装解决
- ListView中 局部刷新Item 实现下载进度条局部更新
- MFC中如何从EDIT控件中获取文字
- W3C发布WAI-ARIA 1.0正式推荐标准 增强开放万维网平台可访问性
- 如何制作一个ActiveX控件,并注册和发布,用于web上!(2)
- 添加中英文日志
- 谈IObjectSafety
- 用Eclipse开发和调试Android应用程序
- 第3章 主机规划与磁盘分区
- phpsocket客户端以及服务器例子