【发布时间】:2016-02-10 08:06:27
【问题描述】:
我正在尝试在带有RecyclerView 的自定义适配器中使用Asynctask,但支架是空的。第一次我在getItemCount(); 中得到 0,我不明白我错过了什么。请帮忙。
@Override
public int getItemCount() {
new initTimeline().execute();
Log.e("ICLength", String.valueOf(Length));
return Length;
}
private class initTimeline extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(context);
pDialog.setMessage("Loading...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
try {
// Execute HTTP Post Request
..............
}return jsonObject1;
}
@Override
protected void onPostExecute(JSONObject json) {
Log.e("AfterPE", String.valueOf(json));
Length = json.length();
Log.e("AfterPELen", String.valueOf(Length));
pDialog.dismiss();
}
}
}
Logcat
02-10 02:33:17.867 4002-4002/com.example.mir E/ICLength: 0
02-10 02:33:19.057 4002-4002/com.example.mir E/AfterPE: {"id":"22","project_id":"2","date":"2015-11-30","description":"in progress"}
02-10 02:33:19.057 4002-4002/com.example.mir E/AfterPELen: 6
我在onPostExecute 中正确获取了Length 的值,但是
int getItemCount() 返回零。
请帮忙。
【问题讨论】:
-
很明显,一旦您启动异步任务,它将获取数据并且您将获得计数,但在方法执行中向前推进,此时大小为零。我的意思是编译器不会停止,直到 asynctask 完成然后返回数据。它将与 asynctask 一起前进。
-
是否有可能在您调用
getItemCount()时,AsyncTask 尚未完成?
标签: android android-asynctask android-recyclerview