您好我正在从屏幕B执行操作。操作后我显示一个警告对话框。一旦用户点击该对话框中的OK按钮,它将导航到屏幕A.它通过Intent发生。
屏幕A包含一个列表。该列表通过列表活动和数组适配器填充。
我需要在打开屏幕A之前或之后通过调用异步任务来更新列表。
怎么做?
答案 0 :(得分:0)
执行此操作的最佳方法是在onResume()或onCreate()方法中实例化AsyncTask。然后,在AsyncTask类的doInBackground方法中,您可以在某些Array中加载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():)有关的任何东西:) 我希望这对你有帮助。