Java 从arraylist获取arraylist值<;Hashmap>;从异步任务

Java 从arraylist获取arraylist值<;Hashmap>;从异步任务,java,android,google-maps,arraylist,android-asynctask,Java,Android,Google Maps,Arraylist,Android Asynctask,我目前正在IngogleMaps项目中工作,我从mysql表中获取纬度和经度的lsit,并将其存储在包含hashmap的Arraylist中 ArrayList<HashMap<String,String>> ArrayList 我想在post-execute方法中获取arraylist值,但它会检索最后一个索引值,而不是整个列表值 这是我的异步任务代码 class VehiclePath extends AsyncTask<String,Str

我目前正在IngogleMaps项目中工作,我从mysql表中获取纬度和经度的lsit,并将其存储在包含hashmap的Arraylist中

    ArrayList<HashMap<String,String>>
ArrayList
我想在post-execute方法中获取arraylist值,但它会检索最后一个索引值,而不是整个列表值

这是我的异步任务代码

    class VehiclePath extends AsyncTask<String,String,String>{
            @Override
            protected void onPreExecute() {
                  cDialog = new ProgressDialog(HistoryTrack.this);
                  cDialog.setMessage("Fetching Vehicle Details");
                  cDialog.setIndeterminate(false);
                  cDialog.setCancelable(false);
                  cDialog.show();
            }



                @Override
                protected String doInBackground(String... args) {
                    // TODO Auto-generated method stub
                    List<NameValuePair> params1 = new ArrayList<NameValuePair>();

                     params1.add(new BasicNameValuePair("org_id", LoginActivity.orgid));
                     params1.add(new BasicNameValuePair("vechicle_reg_no", vehicle_reg_numb));
                     params1.add(new BasicNameValuePair("date", "2014-04-23"));
                     System.out.println("vehicle date no.fdfsd ."+checkdate);
                    // params1.add(new BasicNameValuePair("org_id", LoginActivity.orgid));

                     jArray = jsonParser.makeHttpRequest(vehiclehistorysurll, "POST", params1);

                    //Log.i("tagconvertstr", "["+jArray+"]");

                    try
                    {
                        if(jArray != null){

                        JSONObject c = jArray.getJSONObject(TAG_SRES);
                        //Log.i("tagconvertstr", "["+c+"]");
                        user = c.getJSONArray(TAG_VEHICLE_ARRAY);
                        Log.i("tagconvertstr1", "["+user+"]");

                        for(int i=0;i<user.length();i++)
                        {
                            System.out.println("forloop i valuie"+i);
                            JSONObject c1 = user.getJSONObject(i);
                            JSONObject c2 = c1.getJSONObject(TAG_SRES);




                            vehicle_reg_numb = c2.getString(TAG_Vechicle_REG);
                            latitude= c2.getString(TAG_Latitude);
                             longitude = c2.getString(TAG_Longitude);
                            speed = c2.getString(TAG_Speed);
                            exceed_speed_limit=c2.getString(TAG_Exceed_Speed);
                            bus_tracking_timestamp = c2.getString(TAG_bus_tracking_timestamp);
                            address=c2.getString(TAG_address);
                             map.put(TAG_Latitude,latitude);
                             map.put(TAG_Longitude,longitude);
                             map.put(TAG_Speed, speed);
                             map.put(TAG_address, address);


                            vehiclehistory.add(i,map);

                            System.out.println("Values for vehiclehistory list"+vehiclehistory.get(i));
                             System.out.println("size of arraylist::"+vehiclehistory.size());

                        }

                        }

                        }catch (JSONException e) {
                        e.printStackTrace();
                    }
                    cDialog.dismiss();
                    return null;
                }
                @Override
                protected void onPostExecute(String file_url) {

                     super.onPostExecute(file_url);
                     cDialog.dismiss();
                     System.out.println("size of arraylist::"+vehiclehistory.size());
                     for(int i=0;i<vehiclehistory.size();i++){
                         System.out.println(vehiclehistory.get(i));
                     }
                     for (int i = 0; i < vehiclehistory.size(); i++) {
                         System.out.println("i value"+i);
                         LatLng pinLocation = new LatLng(Double.parseDouble(vehiclehistory.get(i).get(TAG_Latitude)), Double.parseDouble(vehiclehistory.get(i).get(TAG_Longitude)));
                         System.out.println("pin location"+pinLocation);
                         //  LatLng pinLocation = new LatLng(vehiclehistory.get(i), vehiclehistory.get(i));
                    // LatLng pinLocation = new LatLng(Double.parseDouble(vehiclehistory.get(i), Double.parseDouble(vehiclehistory.get(i));
                        // LatLng pinLocation = new LatLng(vehiclehistory1.get(i).latitude, vehiclehistory1.get(i).longitude);
                         String titlevalue=vehiclehistory.get(i).get(TAG_address)+vehiclehistory.get(i).get(TAG_Speed);
                         Marker TP = googleMap.addMarker(new MarkerOptions().
                                 position(pinLocation).title(titlevalue));

                         System.out.println("titlevalue of respective pinlocation"+titlevalue);


                     }



            }   

}
类车辆路径扩展异步任务{
@凌驾
受保护的void onPreExecute(){
cDialog=新建进度对话框(HistoryTrack.this);
cDialog.setMessage(“获取车辆详细信息”);
cDialog.setUndeterminate(假);
cDialog.setCancelable(假);
cDialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…args){
//TODO自动生成的方法存根
List params1=new ArrayList();
params1.add(新的BasicNameValuePair(“org_id”,LoginActivity.orgid));
参数1.添加(新的基本名称对(“车辆注册号”,车辆注册号));
参数1.添加(新的BasicNameValuePair(“日期”,“2014-04-23”);
系统输出打印项次(“车辆日期编号fdfsd.”+检查日期);
//params1.add(新的BasicNameValuePair(“org_id”,LoginActivity.orgid));
jArray=jsonParser.makeHttpRequest(vehiclehistorysurll,“POST”,params1);
//Log.i(“tagconvertstr”,“[“+jArray+”]);
尝试
{
if(jArray!=null){
JSONObject c=jArray.getJSONObject(TAG_SRES);
//Log.i(“tagconvertstr”,“[”+c+“]”);
user=c.getJSONArray(标记车辆数组);
Log.i(“tagconvertstr1”,“[“+用户+”]”);
对于(inti=0;i你可以试试这个

 List<HashMap<String,String>> listMap=new ArrayList<>();
    for (HashMap<String,String> i:listMap) {
       // access HashMap element
        System.out.println(i.get("key"));
 }
List listMap=new ArrayList();
for(HashMap i:listMap){
//访问HashMap元素
System.out.println(i.get(“key”);
}

您可以使用以下代码直接获得它,只需访问数组的最后一个索引即可

LatLng pinLocation = new LatLng(Double.parseDouble(vehiclehistory.get(i).get(TAG_Latitude)), Double.parseDouble(vehiclehistory.get(vehiclehistory.size()).get(TAG_Longitude)));

asyntask代码在哪里?@PankajKumar我发布了我的AsyncTask,例如,我有一个大小为7的arraylist,所有索引值都与最后一个索引相同,即6…为什么我无法获取其余的数组列表值?当你将其放入后执行时,这意味着在代码完成后,它将执行,认为这意味着它只有最后一个访问值,so如果您想在其中输入必须放在doInBackground方法内部的差异值,如果您想在外部使用该数组值,则需要在其中使用PublishProcess。为了便于参考,这是指向示例的链接,代码如下所示
public String LangArray[]array;//…….code……//doInBackground(){//…代码…用于循环{array[i]=您的纬度;}publishProgress(array);}@Override受保护的void onProgressUpdate(Integer…array){super.onProgressUpdate(array);_percentField.setText(array[0]+“”);_percentField.setTextSize(array[1]+“”);…}onPostExecute(){//do same heare _percentField.setText(数组[6]+“”);}
LatLng pinLocation = new LatLng(Double.parseDouble(vehiclehistory.get(i).get(TAG_Latitude)), Double.parseDouble(vehiclehistory.get(vehiclehistory.size()).get(TAG_Longitude)));