Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我如何找到这些ProgressBar_Android_Android Progressbar_Listview Adapter - Fatal编程技术网

Android 我如何找到这些ProgressBar

Android 我如何找到这些ProgressBar,android,android-progressbar,listview-adapter,Android,Android Progressbar,Listview Adapter,我知道如何创建一个具有视图的列表,如上图所示。我正在尝试创建一个下载程序,将有多个线程同时下载。 这些线程需要使用ProgressBar的setProgress(..)。但是,我不知道在使用适配器创建这些进度条后如何引用它们。此外,还有“取消”按钮,以便我可以向其中添加侦听器 请帮我做这个我建议您创建一个任务类,该类将实现可运行,并有一个方法getCurrentProgress(),该方法将返回当前任务的进度,并有一个方法cancel()来取消自身(可以通过升起标志或任何其他方式以任何所需的方式


我知道如何创建一个具有
视图
的列表,如上图所示。我正在尝试创建一个下载程序,将有多个线程同时下载。
这些
线程需要使用
ProgressBar的
setProgress(..)
。但是,我不知道在使用适配器创建这些进度条后如何引用它们。此外,还有“取消”按钮,以便我可以向其中添加侦听器


请帮我做这个

我建议您创建一个
任务
类,该类将实现
可运行
,并有一个方法
getCurrentProgress()
,该方法将返回当前任务的进度,并有一个方法
cancel()
来取消自身(可以通过升起标志或任何其他方式以任何所需的方式进行取消)。然后,您可以使用普通线程(或使用AsyncTask,或其中一个
执行器
)启动任务,并将
任务
作为一个项添加到适配器中,然后您可以使用

Task task = getItem(position);
progressBar.setProgress(task.getCurrentProgress());
在适配器的
getView()方法中


然后,当您需要更新进度时,只需更新
任务中的进度,并调用
适配器.notifyDataSetChange()
在UI线程上。您还需要做的是确保您在
任务
实例中的新进度从其他线程可见,为此,我建议您使用
AtomicInteger
作为进度指示器(因为每个
AtomicInteger.get()
都返回最新的值).

so
adapter.notifyDataSetChange()
将自动刷新所有
视图,从而显示进度:)