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()
都返回最新的值).soadapter.notifyDataSetChange()
将自动刷新所有视图,从而显示进度:)