2013-02-08 44 views
0

嗨我正在從屏幕B執行操作。操作後,我顯示一個警報對話框。一旦用戶點擊該對話框中的OK按鈕,它將導航到屏幕A.它通過Intent發生。如何在Android中打開屏幕之前/之後執行異步任務?

屏幕A包含一個列表。該列表通過列表活動和陣列適配器填充。

我需要通過之前或打開屏幕A.

如何做到這一點後,調用一個異步任務更新列表?

+0

改爲使用裝載機。 – dymmeh 2013-02-08 20:33:13

+0

這不支持在2.2版本的權利? – MidhunVP 2013-02-08 20:36:46

+0

它會的。您必須使用支持庫來執行此操作 – dymmeh 2013-02-08 20:37:07

回答

0

做到這一點,最好的辦法是在你的onResume()或的onCreate()方法實例化您的AsyncTask。然後,在AsyncTask類的doInBackground方法中,您可以在某個數組中加載listView所需的數據。 Finnaly,在onPostExecute()中,你應該使用數組中的數據實例化你的適配器,然後將它分配給你的listView。事情是這樣的:

ProgressDialog pd; 
ArrayAdapter<String> adapter; 
ArrayList<String> dataStrings; 

@Override 
public void onResume() { 
     dataStrings = new ArrayList<String>(); 
     pd = new ProgressDialog(context); 
     new MyAsyncTask().execute(params); 
} 

public class MyAsyncTask extends AsyncTask<String, Boolean, ArrayList<String>> { 

    @Override 
    protected void onPreExecute() 
    { 
     pd = new ProgressDialog(context); 
     pd.setTitle(EsCache.instance.getLangItem("LABEL_PLEASE_WAIT")); 
     pd.setMessage(EsCache.instance.getLangItem("LABEL_LOADING_DATA")); 
     pd.setCancelable(true); 
     pd.show(); 
    } 

    @Override 
    protected ArrayList<String> doInBackground(String... params) { 
     // TODO Auto-generated method stub 

       dataStrings = SomeMethodGetData(); // returns data and stores it in list 
       return dataStrings; 
    } 


    @Override 
    protected void onPostExecute(ArrayList<String> list) { 
       adapter = new ArrayAdapter<String>(context, 
       android.R.layout.simple_list_item_1, dataStrings); 

       listView.setAdapter(adapter); 
     pd.dismiss(); 
    } 


} 

這只是一個簡單的演示,但它能夠完成任務,這是沒有太大的不同,如果你使用一些自定義的適配器。你必須小心,儘管你不會混淆東西,並嘗試改變任何與doInBackground()中的UI有關的事情:) 我希望這可以幫助你。

相關問題