Я здесь с другим вопросом. Я отправляю вам код из моей функции AsyncTask для получения значений из JSONObject (webservice). Моя проблема заключается в том, что у меня есть список, и я заполняю этот список данными из json в методе onSuccess, но позже, в методе onPostExecute для AsyncTask, «result» имеет значение null.AsyncTask и JSON, onSuccess ничего не возвращает
private class getCategories extends AsyncTask<String, Void, List<Category>> {
private int num_cat_subcat; // category count
@Override
protected List<Category> doInBackground(String... arg0) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(arg0[0], null, new JsonHttpResponseHandler() {
public void onSuccess(JSONObject data) {
try {
JSONObject response = data.getJSONObject("response");
JSONArray categories = response
.getJSONArray("categories");
// elements count
num_cat_subcat = categories.length();
for (int i = 0; i < categories.length(); i++) {
JSONObject item = (JSONObject) categories
.getJSONObject(i);
if (item.getString("id").equalsIgnoreCase(
"4d4b7105d754a06376d81259")) {
JSONArray subcategories = item
.getJSONArray("categories");
// Category --> id, name, pluralName, shortName,
// icon_prefix, icon_suffix, primary, parentId
Category newItem = new Category(item
.getString("id"), item
.getString("name"), item
.getString("pluralName"), item
.getString("shortName"), null, null,
null);
listCategories.add(newItem);
newItem = null;
if (subcategories.length() > 0) {
// Si tiene subcategorias las contamos.
num_cat_subcat += subcategories.length();
for (int j = 0; j < subcategories.length(); j++) {
JSONObject subitem = (JSONObject) subcategories
.getJSONObject(j);
Category newSubItem = new Category(
subitem.getString("id"),
subitem.getString("name"),
subitem.getString("pluralName"),
subitem.getString("shortName"),
null, null, item
.getString("id"));
listCategories.add(newSubItem);
newSubItem = null;
}
}
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onFailure(Throwable arg0) {
}
});
return listCategories;
}
@Override
protected void onPostExecute(List<Category> result) {
Log.i("result", result.toString());
for (int k = 0; k < result.size(); k++) {
ALLOFTHEM += result.get(k).getId();
if (k < result.size() - 1) {
ALLOFTHEM += ",";
}
}
}
}
вы видите данные, которые вы хотите на ур 'ListView'.DOes ваш отладочный монитор принять вас в' onPostExecute' – Nezam
будет там напечатано любое исключение? –
Я думаю, что вы должны положить несколько журнальных журналов, чтобы проверить, в какой момент ваш код работает. – NaserShaikh