更新:我通過HashMap填充數組,Iam使用Asynctask進行http請求&填充數組後將該數組放入對話框中。當我第一次運行我的應用程序,它給了我一個空的對話框&沒有給出任何錯誤,但是當我重新運行我的應用程序時,它完美地顯示了對話框中的所有數組元素。什麼原因 ?使用HashMap填充陣列<String,String>
//JsonResponse Inner Class in main class
private class JsonResponse extends AsyncTask<String, Void, String> {
String response = "";
private ArrayList<HashMap<String, String>> prServices_resultList = new ArrayList<HashMap<String, String>>();
protected void onPreExecute()
{
}
protected void onPostExecute(String result)
{
if(response.equalsIgnoreCase("Success"))
{
ResultList_List = prServices_resultList;
int z=0;
for (HashMap<String, String> hashList : prServices_resultList)
{
Av_List[z] = hashList.get(android_Av_ID);
Av_Lat[z] = Double.parseDouble(hashList.get(android_Av_LAT));
Av_Lng[z] = Double.parseDouble(hashList.get(android_Av_LONG));
z++;
}
}
}
protected String doInBackground(final String... args)
{
JSONParser jParser = new JSONParser();
JSONArray jArrayServices = jParser.getJSONFromUrl(url_Services);
try{
for (int i = 0; i < jArrayServices.length(); i++)
{
JSONObject jsonElements = jArrayServices.getJSONObject(i);
String S_id = jsonElements.getString(android_S_ID);
String S_name = jsonElements.getString(android_S_NAME);
HashMap<String, String> hashServices = new HashMap<String, String>();
// adding each child node to HashMap key
hashServices.put(android_S_ID, S_id);
hashServices.put(android_S_NAME, S_name);
// adding HashList to ArrayList
prServices_resultList.add(hashServices);
}
response = "Success";
}
catch(JSONException e)
{
e.printStackTrace();
}
return response;
}
}
在我的主類,當我按下一個按鈕:
new JsonResponse().execute;
在上面的onCreate主類,我宣佈,如:
static ArrayList<HashMap<String, String>> ResultList_Services = new ArrayList<HashMap<String, String>>();
String[] Db_Services = new String[ResultList_Services.size()];
String[] Db_ServicesID = new String[ResultList_Services.size()];
現在,我得到一個錯誤:java.lang中。 ArrayIndexOutOfBoundsException:length = 0; index = 0
如果從後臺線程填充靜態是壞的那麼我應該怎麼做.. Plz告訴我這個新的 – AndroidLover
'ResultList_Services = resultList;'將處理這個。請仔細閱讀) –
是的,乍一看我錯過了,但後來我知道你試圖解釋我..你的幫助確實讓我做了一點。如果我得到了渴望結果生病除了你的答案.. – AndroidLover