2013-08-05 7 views
0

enter image description here
위와 같이 View으로 목록을 만드는 방법을 알고 있습니다. 다운로더를 만들려고하고 있는데 동시에 여러 개의 스레드가 다운로드 될 것입니다.
이러한 ThreadProgressBarsetProgress(..)을 사용해야합니다. 그러나 어댑터를 사용하여 만든 진행 막대를 어떻게 참조 할 수 있는지 알 수 없습니다. 그리고 확장자에 따라 취소 버튼을 추가하여 청취자를 추가 할 수 있습니다.이러한 ProgressBar를 어떻게 찾을 수 있습니까?

저를 도와주세요이

답변

1

난 당신이 Runnable를 구현하고 현재 작업의 진행 자체를 취소하는 방법 cancel()을 반환하는 방법 getCurrentProgress()을 것 Task 클래스를 만들 제안 (수 있습니다 취소 플래그 또는 기타 방법을 올리는 등 원하는 방식으로 수행됩니다. 그럼 당신은 보통의 스레드를 사용하여 작업을 시작 (또는 AsyncTask를, 또는 Executors 중 하나를 사용) 및 항목으로 어댑터에 당신의 Task의를 추가 한 다음 당신은 당신의 getView() 방법에

Task task = getItem(position); 
progressBar.setProgress(task.getCurrentProgress()); 

를 사용하여 적절한 뷰를 표시 할 수 있습니다 어댑터의.

진행률을 업데이트해야 할 경우 진행률을 Task 안에 업데이트하고 UI 스레드에서 adapter.notifyDataSetChange()으로 전화하면됩니다. 당신이해야 할 일은 Task 인스턴스의 새로운 진행이 다른 스레드에서 볼 수 있는지 확인하는 것입니다. 왜냐하면 모든 AtomicInteger.get()이 최신 값을 반환하기 때문에 진행 표시기로 AtomicInteger을 사용하는 것이 좋습니다.

+0

그래서'adapter.notifyDataSetChange()'는 모든 뷰가 자동으로 리프레시되어 진행 상황을 보여줄 것입니까? :) –

+0

네, 맞습니다. – Desert

+0

좋아, 나는 그것에 종사하고 당신에게 돌아갈 것이다 :) –