2012-02-07 21 views
5

Szukałem dzisiaj cały dzień, próbując znaleźć przykładowy kod lub samouczki, jak utworzyć krąg postępu podczas wykonywania zadania. Czas wykonania tego zadania jest odpowiednio różny i istnieje wiele próbek, które wykorzystują Thread.sleep (xxxx), dzięki czemu krążą, ale nie jest to efektywne. Oto, co chcę zrobić, chcę załadować ListView wypełniony z usługi internetowej przy użyciu JSON po kliknięciu przycisku. Widok listy ładuje się doskonale, ale ładowanie zajmuje około 5-10 sekund w zależności od rozmiaru, więc chcę pokazać wirowanie, gdy użytkownik czeka. Czy ktoś może udostępnić przykładowy kod, jak to osiągnąć?Okno dialogowe Android asyncTask Koło

Dziękuję

+0

Moja odpowiedź pomaga dla Ciebie? – brian

+0

Jeśli znajdziesz odpowiedź. plz sprawdź jedną zaakceptowaną odpowiedź. – brian

+0

proszę zaznacz po lewej mojej odpowiedzi – brian

Odpowiedz

5

Można spróbować następujący kod,

progDailog = ProgressDialog.show(loginAct,"Process ", "please wait....",true,true); 

new Thread (new Runnable() 
{ 
    public void run() 
    { 
     // your code goes here 
    } 
}).start(); 

Handler progressHandler = new Handler() 
{ 

    public void handleMessage(Message msg1) 
    { 

     progDailog.dismiss(); 
     } 
} 
28

new Load().execute(); zadzwonić.

class Load extends AsyncTask<String, String, String> { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      ProgressDialog progDailog = new ProgressDialog(Activity.this); 
      progDailog.setMessage("Loading..."); 
      progDailog.setIndeterminate(false); 
      progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      progDailog.setCancelable(true); 
      progDailog.show(); 
     } 
     @Override 
     protected String doInBackground(String... aurl) { 
      //do something while spinning circling show 
      return null; 
     } 
     @Override 
     protected void onPostExecute(String unused) { 
      super.onPostExecute(unused); 
      progDailog.dismiss(); 
     } 
    } 
+0

Dzięki Brian i wszystkim ... Jest to bardzo pomocne. Mam to wszystko razem. –

+2

Następnie proszę, proszę zaznaczyć w lewo. – brian

+0

O ProgressDialog (Activity.this); w klasie Load daje błąd. Oczywiście. Co musimy użyć? –

11
private class LoadAssync extends AsyncTask<String, Void, Void> { 



    protected void onPreExecute() { 

     ProgressDialog dialog; 
        dialog.setMessage("Loading..."); 
    dialog.show(); 
    } 

    protected Void doInBackground(final String... args) { 
     // you can do the code here 
     return null; 


    } 

    protected void onPostExecute(final Void unused) { 

     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 

    } 
} 

u można nazwać assync jak ten

LoadAssync mAsyync=new LoadAssync(); 
mAsyync.execute(null);