2015-09-26 2 views
0

Я пытаюсь использовать HashMap для передачи значений другому классу, но я не уверен, почему у меня такие странные результаты. Я сделал system.out.println и получил [{Latitude = 1.224119, имя пользователя = заем, долгота = 103.930041}], [{Latitude = 1.224119, имя пользователя = заем, долгота = 103.930041}] повторяемо, но это не должно быть так как у меня две разные координаты.Hashmap с Intent не работает

И когда я передаю его другому классу, он возвращает мне только одну координату, а не две.

Что-то случилось с моим кодом?

Получить координаты из БД и перейти к другому классу:

protected void onPostExecute(JSONObject json) { 
ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>(); 
HashMap<String, String> h1=new HashMap<String, String>(); 
      if (json != null) { 
       Toast.makeText(Borrower_AP.this, json.toString(), 
         Toast.LENGTH_LONG).show(); 

       try { 
        dataJsonArr = json.getJSONArray("Posts"); 
        for (int i = 0; i < dataJsonArr.length(); i++) { 
         JSONObject c = dataJsonArr.getJSONObject(i); 
         Longitude = c.getDouble("longitude"); 
         Latitude = c.getDouble("latitude"); 
         String s_lat = Latitude.toString(); 
         String s_long = Longitude.toString(); 
         h1.put("Latitude",s_lat); 
         h1.put("Longitude",s_long); 
         h1.put("username",username); 
         list.add(h1); 
Intent i = new Intent(this, BorrowerMap.class); 
       i.putExtra("list", list); 
       System.out.print(list); 
       startActivity(i); 
         } 

Получить значения из:

ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>(); 
    list=(ArrayList<HashMap<String, String>>) getIntent().getExtras().get("list"); 
    String Latitude=list.get(0).get("Latitude"); 
    String Longitude=list.get(0).get("Longitude"); 
    String s_lat = Latitude.toString(); 
    String s_long = Longitude.toString(); 
    System.out.println(Latitude); 
    System.out.println(Longitude); 

ответ

0

Если я следовать ваш вопрос, чем сделать пристальный вызов после цикла body.Because его получает только один элемент списка и делает вызов намерения в каждом цикле.

for (int i = 0; i < dataJsonArr.length(); i++) { 
         JSONObject c = dataJsonArr.getJSONObject(i); 
         Longitude = c.getDouble("longitude"); 
         Latitude = c.getDouble("latitude"); 
         String s_lat = Latitude.toString(); 
         String s_long = Longitude.toString(); 
         h1.put("Latitude",s_lat); 
         h1.put("Longitude",s_long); 
         h1.put("username",username); 
         list.add(h1); 
       } 
Intent i = new Intent(this, BorrowerMap.class); 
       i.putExtra("list", list); 
       System.out.print(list); 
       startActivity(i); 
Смежные вопросы