2012-02-23 27 views
8

私はAndroidアプリケーションを作っています。インターネットを介してデータを読み込む必要があります(一部のデータだけではありません)。データがロードされているときにインターネット接続が遅い場合は、「Loading ...」アイコンをユーザーに表示します。Androidで「読み込み中」のステータスを表示するにはどうすればよいですか?

どうすればいいですか?データがバックグラウンドでロードされている間に "Loading ..."アイコンを表示し、完全にロードされたらアイコンを非表示にしますか?

ありがとうございます!タスクcompletion..Thatの進行状況ダイアログと一緒に

+0

下にプログレスダイアログを表示し、これはFUL [HTTPを使用している参照してください。 //www.41post.com/4588/programming/android-coding-a-loading-screen-part-1](http://www.41post.com/4588/programming/android-coding-a-loading-scree) n-part-1) – NagarjunaReddy

答えて

21

使用非同期タスクを行います。 onCreate方法において

new SomeTask(0).execute(); 

/** Inner class for implementing progress bar before fetching data **/ 
private class SomeTask extends AsyncTask<Void, Void, Integer> 
{ 
    private ProgressDialog Dialog = new ProgressDialog(yourActivityClass.this); 

    @Override 
    protected void onPreExecute() 
    { 
     Dialog.setMessage("Doing something..."); 
     Dialog.show(); 
    } 

    @Override 
    protected Integer doInBackground(Void... params) 
    { 
     //Task for doing something 

     return 0; 
    } 

    @Override 
    protected void onPostExecute(Integer result) 
    { 

     if(result==0) 
     { 
      //do some thing 
     } 
     // after completed finished the progressbar 
     Dialog.dismiss(); 
    } 
} 
+0

お返事ありがとうございました!本当に有益で助かりました! – Roshnal

+0

@Roshnal hayもこのリンクをチェックしてくださいhttp://android-developers.blogspot.in/2010/07/multithreading-for-performance.html –

2

使用AsyncTaskは、自分のステータスのために...

0

:バックグラウンド操作の

WebView mWebView; 
ProgressDialog pgDiagWebView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 
    pgDiagWebView = ProgressDialog.show(CreateAccountWebView.this, "Loading", "Wait", true); 
    mWebView = (WebView) findViewById(R.id.registerWebView); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebViewClient(new ResgisterWebViewClient()); 
    mWebView.loadUrl("http://www.google.com/"); 
} 

class ResgisterWebViewClient extends WebViewClient { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 
     pgDiagWebView.dismiss(); 
    } 
} 
1

使用asynctask、次いでなど

private class ProgressTask extends AsyncTask<String, Void, Boolean> { 
    private ProgressDialog dialog; 
    List<Message> titles; 
    private ListActivity activity; 
    //private List<Message> messages; 
    public ProgressTask(ListActivity activity) { 
     this.activity = activity; 
     context = activity; 
     dialog = new ProgressDialog(context); 
    } 



    /** progress dialog to show user that the backup is processing. */ 

    /** application context. */ 
    private Context context; 

    protected void onPreExecute() { 
     this.dialog.setMessage("Progress start"); 
     this.dialog.show(); 
    } 

     @Override 
    protected void onPostExecute(final Boolean success) { 
      List<Message> titles = new ArrayList<Message>(messages.size()); 
      for (Message msg : messages){ 
       titles.add(msg); 
      } 
      MessageListAdapter adapter = new MessageListAdapter(activity, titles); 
      activity.setListAdapter(adapter); 
      adapter.notifyDataSetChanged(); 

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

     if (success) { 
      Toast.makeText(context, "OK", Toast.LENGTH_LONG).show(); 
     } else { 
      Toast.makeText(context, "Error", Toast.LENGTH_LONG).show(); 
     } 
    } 

    protected Boolean doInBackground(final String... args) { 
     try{  
      BaseFeedParser parser = new BaseFeedParser(); 
      messages = parser.parse(); 


      return true; 
     } catch (Exception e){ 
      Log.e("tag", "error", e); 
      return false; 
     } 
     } 


} 

}

関連する問題