2013-05-16 58 views
0

每個列表視圖項中都有一個「下載」按鈕。當按鈕被點擊時,它會啓動一個工作線程來關閉文件。同時,按鈕變成進度條並顯示進度。下載時在列表視圖中顯示進度條

所以請給我看一些正確的方法。

+0

AsyncTask是您需要的東西,但如果您的列表足夠長以提供滾動和重複的getView()調用,則在列表項中顯示進度條時,不會提供任何幫助。我所做的是,在AsyncTask中將HashMap映射位置保存爲progressValue,然後更新此HashMap的progressValue並調用notifyDataSet。我在列表項中使用的進度條僅僅是一個FrameLayout中的2個ImageView。 –

回答

1

事情是這樣的:

public class DownloadTask extends AsyncTask<Void, Void, Boolean> { 

    protected void onPreExecute() { 
      ProgressDialog() progress = new ProgressDialog(context); 
      progress.setMessage("Loading ..."); 
      progress.show(); 
    } 

    protected Boolean doInBackground(Void... arg0) { 
      // Do work 
     return true; 
    } 

    protected void onPostExecute(Boolean result) { 
     progress.dismiss(); 
    } 
} 

這應該被嵌套在活動類和執行這樣的:

new DownloadTask().execute(); 

您可能需要調整asynctask以適應您的需求,但這會讓您開始。

+0

實際上,當我點擊一個listview項目中的一個下載按鈕並且進度條顯示良好時,但是在我拉取並刷新後,另一個列表視圖項目中的另一個progressbar也顯示出來。 – lolobug

+0

這是因爲我重用視圖爲如下:@Override \t公共視圖getView(INT位置,查看convertView,父的ViewGroup){ \t \t如果(convertView == NULL) \t \t { \t \t \t convertView =充氣.inflate(R.layout.app_item,null); \t \t} \t \t AppItem appItem =(AppItem)getItem(position); \t \t constructView(convertView,appItem); \t \t return convertView; \t}但是,如果我刪除if(convertView == null)..,滑動將不會很順利。如何解決它? – lolobug