2012-05-28 58 views
1

我正在使用從webservice獲取n個記錄的web服務。我正在使用WS客戶端來調用Web服務。現在我想要有一個進度條來顯示已加載n個數據中的多少個數據。有沒有可能實現這個目標?我使用AsyncTask在後臺調用WS。如何在Webservice加載數據時顯示進度條?

回答

7

嘗試是這樣的 來說,這基本上顯示,而異步任務運行

public class AndroidAsyncTaskProgressBar extends Activity { 

ProgressBar progressBar; 
Button buttonStartProgress; 

public class BackgroundAsyncTask extends 
    AsyncTask<Void, Integer, Void> { 

    int myProgress; 

    @Override 
    protected void onPostExecute(Void result) { 
    // TODO Auto-generated method stub 
    Toast.makeText(AndroidAsyncTaskProgressBar.this, 
     "onPostExecute", Toast.LENGTH_LONG).show(); 
    buttonStartProgress.setClickable(true); 
    } 

    @Override 
    protected void onPreExecute() { 
    // TODO Auto-generated method stub 
    Toast.makeText(AndroidAsyncTaskProgressBar.this, 
     "onPreExecute", Toast.LENGTH_LONG).show(); 
    myProgress = 0; 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
    // TODO Auto-generated method stub 
    while(myProgress<100){ 
    myProgress++; 
    publishProgress(myProgress); 
     SystemClock.sleep(100); 
    } 
    return null; 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) { 
    // TODO Auto-generated method stub 
    progressBar.setProgress(values[0]); 
    } 

} 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    buttonStartProgress = (Button)findViewById(R.id.startprogress); 
    progressBar = (ProgressBar)findViewById(R.id.progressbar_Horizontal); 
    progressBar.setProgress(0); 

    buttonStartProgress.setOnClickListener(new Button.OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
    new BackgroundAsyncTask().execute(); 
    buttonStartProgress.setClickable(false); 
    }}); 
} 
} 
+0

嘿Aalok,謝謝你的幫助。嘗試此 – Shraddha

+0

現在檢查我的答案,以獲得更好的參考,請嘗試http://android-er.blogspot.in/2010/11/progressbar-running-in-asynctask.html –

+1

謝謝,它與一些修改一起使用與webservice響應。 – Shraddha

1

要執行這種進度更新的更新進度條的例子,你需要讓你的web服務返回導致部分不完全。像n個記錄一樣,webservice可以返回結果n/p,一次,並使用publishProgress方法通知事件線程關於任務的百分比,postEexcute完成webservice調用和解析。

相關問題