0
嗨我正在從屏幕B執行操作。操作後,我顯示一個警報對話框。一旦用戶點擊該對話框中的OK按鈕,它將導航到屏幕A.它通過Intent發生。如何在Android中打開屏幕之前/之後執行異步任務?
屏幕A包含一個列表。該列表通過列表活動和陣列適配器填充。
我需要通過之前或打開屏幕A.
如何做到這一點後,調用一個異步任務更新列表?
嗨我正在從屏幕B執行操作。操作後,我顯示一個警報對話框。一旦用戶點擊該對話框中的OK按鈕,它將導航到屏幕A.它通過Intent發生。如何在Android中打開屏幕之前/之後執行異步任務?
屏幕A包含一個列表。該列表通過列表活動和陣列適配器填充。
我需要通過之前或打開屏幕A.
如何做到這一點後,調用一個異步任務更新列表?
做到這一點,最好的辦法是在你的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有關的事情:) 我希望這可以幫助你。
改爲使用裝載機。 – dymmeh 2013-02-08 20:33:13
這不支持在2.2版本的權利? – MidhunVP 2013-02-08 20:36:46
它會的。您必須使用支持庫來執行此操作 – dymmeh 2013-02-08 20:37:07