2012-06-11 49 views
0

我做的項目是這樣的:代碼Fetch Messages from Inbox如何在我的項目中製作進度條(加載動畫)?

部分:

while (cursor.moveToNext()) 
{ 
    String address = cursor.getString(1); 
    String body = cursor.getString(3); 

    // Loading too long 
    System.out.println("======> Mobile number => "+address); 
    System.out.println("=====> SMS Text => "+body); 
    sms.add("Address=> "+address+"\n SMS => "+body); 
} 
return sms; 

但是,有太多的消息,需要很長時間才能顯現。雖然裝載儀我想顯示動畫(progressbar)

謝謝你......

+0

我建議你用'做這個AsynTask'這將非常有幫助一個適合你。在你的'doInBackground()'方法中做這個代碼。看看這個[示例](http://www.androidsnippets.com/grab-a-url-source-with-progressdialog-and-asynctask) – Praveenkumar

+0

我非常困惑,使用AsynTask ..和示例代碼很難從我。你可以編輯該代碼並使用AsynTask?謝謝4幫助我。林新手.. –

+0

你有沒有嘗試每個下面 – Praveenkumar

回答

0

實施項目的Runnable。在

run() 

方法運行該代碼

while (cursor.moveToNext()) 
{ 
String address = cursor.getString(1); 
String body = cursor.getString(3); 

// Loading too long 
System.out.println("======> Mobile number => "+address); 
System.out.println("=====> SMS Text => "+body); 
sms.add("Address=> "+address+"\n SMS => "+body); 
} 
//return sms;// Make a global variable which can hold values here... 
handler.sendEmptyMessage(0); 

。現在啓動線程這樣的:

Thread fetchSmsThread = new Thread(this); 
progressDialog = ProgressDialog.show(context,title,message); 
fetchSmsThread.start(); 

處理代碼:

Handler handler = new Handler() 
{ 

    //////Catch Message Here.. and Dismiss dialog... 
    ///Note You have to declare progress dialog as global so that you can access it here... 

} 

如需進一步幫助有關可運行遵循此:

How to run a Runnable thread in Android?

如果你不想使用的Runnable然後用Android AsynClass,請按照:

AsyncTask Android example

1

使用Asyntask,把這些代碼在doInBackground,在onPreExecute()開始processbar,dimiss在onPostExecute()

2

通常你會使用的AsyncTask在Android這樣的事情..

簡介:通過默認情況下,你所編寫的所有不使用線程,服務等的代碼將在UI thread中執行。這意味着如果你在那裏做了一些昂貴的工作,用戶界面將被阻塞(不響應)。好的做法是將這麼昂貴的任務移動到單獨的線程中,否則你的應用程序將顯示ANR對話框並被關閉。

如何:一個用於你的情況,最好的辦法是使用AsyncTask ..基本上在onPreExecute()您展示進度對話框或「長期任務進行中」動畫。在doInBackground(Params... params)你把昂貴的操作代碼。如果你需要更新進度條,你可以從onProgressUpdate(Progress... values)。當昂貴的任務完成時,它將提供結果到onPostExecute(Result result)方法。從這裏你可以再次更新UI並關閉以前顯示的進度對話框。

希望它有幫助。乾杯..;)

0

main.xml中添加一個進度條與ID(yourProgressBarId在下面的例子):

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final ListView lViewSMS = (ListView) findViewById(R.id.listViewSMS); 

    final ProgressBar progressBar = (ProgressBar)findViewById(R.id.yourProgressBarId); 
    progressBar.setVisibility(View.VISIBLE); 
    new Thread(){ 
     public void run() { 

       ArrayList sms =fetchInbox(); 
       if(sms!=null) 
       lViewSMS.post(new Runnable() { 

        @Override 
        public void run() { 
         ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, sms); 
         lViewSMS.setAdapter(adapter); 
         progressBar.setVisibilty(View.GONE); 
       } 
      }); 
    } 
}.start(); 

} 
+0

我得到這個錯誤路線的答案的人: ArrayAdapter適配器=新 ArrayAdapter(這一點, android.R.layout.simple_list_item _1,短信); 可以解決這個問題嗎?謝謝.. –

+0

ArrayAdapter adapter = new ArrayAdapter(NameOfYourActivity.this,android.R.layout.simple_list_item_1,sms);欣賞如果你把它標記爲回答,如果它可以幫助你:) – Zelleriation