我正在开发一个AsyncTask类。我试着解析Json并展示它。一切都很好,但我有一个问题。我想检查我的Asynctask类的状态。我的意思是我想检查AsyncTask何时完成。
这是我的代码:
private class LoadItemFromServer extends AsyncTask<String, Void, String> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage("Loading...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
try {
JsonResult = FlashScreen
.execute(
"***************",
FlashScreen.CreateJson(
"GetCategoryHierharchy", "eng"));
} catch (Exception e) {
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
Log.e("serverrrr", JsonResult);
try {
ParseJsonFromServer(JsonResult);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void ParseJsonFromServer(String server) throws JSONException {
JSONArray jsonArray = null;
JSONObject mainJson = new JSONObject(server);
jsonArray = mainJson.getJSONArray("result");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject data = jsonArray.getJSONObject(i).getJSONObject("data");
Azercell_PagerTitleStrip_items objItem = new Azercell_PagerTitleStrip_items();
objItem.setTitle(data.getString("title"));
Log.e("titlesss", data.getString("title"));
arrayOfList.add(objItem);
}
}
我的问题在于这一部分:
loaditem = new LoadItemFromServer();
loaditem.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
try {
if (loaditem.getStatus() == AsyncTask.Status.FINISHED) {
for (int i = 0; i < arrayOfList.size(); i++) {
page = inflater.inflate(R.layout.azercell_category_pages, null);
// setAdapterToListview(page);
titles.add(arrayOfList.get(i).getTitle());
pages.add(page);
}
} else {
Log.e("asynctask status", "not finished");
}
} catch (Exception e) {
}
目前我的arrayOfList
数组大小为0,但我记录了ParseJsonFromServer,并且此数组的大小不为0。
我等不及AsyncTask何时完成?
我怎样才能解决我的问题?如果有人知道解决方案,请帮助我
答案 0 :(得分:0)
当你的onPostExecute()方法被调用时,它意味着你的执行已经完成
答案 1 :(得分:0)
取这部分代码:
for (int i = 0; i < arrayOfList.size(); i++) {
page = inflater.inflate(R.layout.azercell_category_pages, null);
// setAdapterToListview(page);
titles.add(arrayOfList.get(i).getTitle());
pages.add(page);
}
在ParseJsonFromServer
方法的最后。 (还尝试改进下面的编码)
public void ParseJsonFromServer(String server) throws JSONException {
JSONArray jsonArray = null;
JSONObject mainJson = new JSONObject(server);
jsonArray = mainJson.getJSONArray("result");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject data = jsonArray.getJSONObject(i).getJSONObject("data");
Azercell_PagerTitleStrip_items objItem = new Azercell_PagerTitleStrip_items();
objItem.setTitle(data.getString("title"));
Log.e("titlesss", data.getString("title"));
arrayOfList.add(objItem);
}
for (int i = 0; i < arrayOfList.size(); i++) {
page = inflater.inflate(R.layout.azercell_category_pages, null);
// setAdapterToListview(page);
titles.add(arrayOfList.get(i).getTitle());
pages.add(page);
}
}