Android Can';t访问AsyncTask中的ArrayList HashMap值
我在Android Can';t访问AsyncTask中的ArrayList HashMap值,android,arraylist,android-asynctask,hashmap,Android,Arraylist,Android Asynctask,Hashmap,我在AsyncTask中有一个ArrayList,我想将从数据库检索到的数据存储到其中,然后我想在onPostExecute中访问列表中的每个元素,但从ArrayList获取值时出错。我的代码中有一个PID标记的日志,但在logcat中我看不到它 class Search extends AsyncTask<String, String, ArrayList<HashMap<String, String>>> { int success ;
AsyncTask
中有一个ArrayList
,我想将从数据库检索到的数据存储到其中,然后我想在onPostExecute
中访问列表中的每个元素,但从ArrayList获取值时出错。我的代码中有一个PID标记的日志,但在logcat中我看不到它
class Search extends AsyncTask<String, String, ArrayList<HashMap<String, String>>> {
int success ;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected ArrayList<HashMap<String, String>> doInBackground(String... args) {
List<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("search", result));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest("http://timit.ir/search/query1",
"POST", param);
// check log cat fro response
Log.d("Create Response", json.toString());
// check for success tag
try {
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// products found
// Getting Array of Products
products = json.getJSONArray(TAG_PRODUCTS);
// looping through All Products
for (int i = 0; i < products.length(); i++) {
JSONObject c = products.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_PID);
String bname = c.getString(TAG_NAME);
String success = json.getString(TAG_SUCCESS);
String subname = c.getString(TAG_SUBNAME);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_PID, id);
map.put(TAG_NAME, bname);
map.put(TAG_SUCCESS, success);
map.put(TAG_SUBNAME, subname);
// adding HashList to ArrayList
productsList.add(map);
}
Log.d("PID:", productsList.get(0).get(TAG_PID));
}
}
catch (JSONException e) {
e.printStackTrace();
}
return productsList;
}
/**
* After completing background task Dismiss the progress dialog
* **/
@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
Log.d("succeeeeeeeeeessssss:::", result.get(0).get(TAG_SUCCESS));
if(result.get(0).get(TAG_SUCCESS) !=null && result.get(0).get(TAG_SUCCESS).equals("1")){
Toast.makeText(getBaseContext(), "ok", 2000).show();
}
else
{
Toast.makeText(getBaseContext(), "fail", 2000).show();
}
}
}
实际上,问题是你们在产品阵列中获得了成功的对象,但它是另一个对象 JSON: “产品”:[], “成功”:“1” 从代码中删除此行:
String success = json.getString(TAG_SUCCESS)`;
我将冒昧猜测productsList是nullproductsList.add(map),这一行可能会给出Null指针异常productsList.add(map);我给出了每个项目的日志id、名称,。。。他们都很好!!