Как отобразить Progressbar, когда Webservice загружает данные?

1

Я использую веб-сервис, который извлекает n количество записей из webservice. Я использую WS Client для вызова веб-сервисов. Теперь я хотел бы иметь индикатор выполнения, который показывает, сколько из n числа данных загружено. Есть ли возможности достичь этого? Я использую AsyncTask для вызова WS в фоновом режиме.

Теги:
web-services
progress-bar

2 ответа

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
    Эй, Аалок, спасибо за помощь. Пробую это
  • 0
    проверьте мой ответ сейчас для лучшей ссылки, попробуйте android-er.blogspot.in/2010/11/…
Показать ещё 3 комментария
1

Чтобы выполнить такие обновления прогресса, вам необходимо заставить ваш веб-сервис возвращать результаты в части не полностью. Как и для n количества записей, webservice может возвращать результаты n/p, один раз и использовать метод publishProgress, чтобы уведомлять поток событий о проценте задачи и postEexcute о завершении вызова и анализа веб-сервисов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню