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