本文主要是介绍android开发 ListView ProgressBar实时更新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近公司做的一款安卓APP项目需要实现一个下载功能,其中我用listView列表来展示下载项目,每个Item里面用到了ProgressBar控件来实时显示下载进度,我是通过接口获取每个线程对应的下载进度在item的ProgressBar更新的,最开始我把这个部分处理在Adpater里面处理的。结果我用尽各种办法都没有实现让他实时更新ProgeressBar进度。
纠结了几天过后,我在网上查了一些资料。最终找到了解决方法,这里感谢一下大佬给我指了路。方法就是在listView所在Activity里面对每个item进度进行更新。先通过ListView的getChildAt(int postion)的方法获取对应的item,然后在UI线程更新对应的progressBar值。
代码如下
private void proProgress(final int adapterPostion, final int pro){downFileTaskManger.getData().get(adapterPostion).setPro(pro);if(adapterPostion>=xListView.getFirstVisiblePosition()&&adapterPostion<=xListView.getLastVisiblePosition()){int postionVIew = adapterPostion - xListView.getFirstVisiblePosition();View item = xListView.getChildAt(postionVIew);ProgressBar progressBar = (ProgressBar) item.findViewById(R.id.item_down_pro);progressBar.setProgress(pro);if(pro==100){TextView state = (TextView) item.findViewById(R.id.item_down_size);data.get(postionVIew).setfSzie("完成");state.setText("本地/xyztc");}}}
备注:
1、这个方法要放在ListView所在Activity类里面,adapterPostion为要更新的item位置,pro为进度值。
2、此方法需要放在UI线程执行我用的Handler机制如下
new Handler(XzZlActivity.this.getMainLooper()).post(new Runnable() {@Overridepublic void run() {proProgress(pos,up);} });
这篇关于android开发 ListView ProgressBar实时更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!