2016-08-19 2 views
-1

Я просто хочу знать, почему моя переменная класса Setter Getter получает только последний объект из JSON? предполагается, что все json-объекты будут выбраны для установки переменной getter, чтобы она могла передать ее в recyclerview.почему переменная класса Setter Getter получает только последний объект от JSON, android, recyclerView

Вот часть кодекса, Im новичок, пожалуйста помочь

JSONArray json = req 
        .getJSONArray("worldpopulation"); 


      for (int i = 0; i < json.length(); i++) { 

       JSONObject jsonOb = json 
         .getJSONObject(i); 
       setterGetterClass = new SuperHeroes(jsonOb.getInt(Configg.TAG_rank),jsonOb.getString(Configg.TAG_country),jsonOb.getString(Configg.TAG_population),jsonOb.getString(Configg.TAG_flag)); 

       Log.d("tag", setterGetterClass.getcountry().toString()); 
       Log.d("show: ", setterGetterClass.toString()); 
      } 

      Log.d("parseData: ", setterGetterClass.toString()); 


     } catch (JSONException e) { 
      e.printStackTrace(); 
      Toast.makeText(getApplicationContext(), 
        "Error: " + e.getMessage(), 
        Toast.LENGTH_LONG).show(); 
     } 
+0

что бы вы могли подумать? – njzk2

+0

у вас есть только одна переменная, как вы ожидаете, что она будет содержать ссылки на несколько объектов? – njzk2

ответ

0

Вы устанавливаете «setterGetterClass» переменной в каждой итерации ваш цикл. Когда ваша контура закончится, ваш «setterGetterClass» будет иметь последнее значение вашего JSONArray. Именно по этой причине вы получаете каждый раз последнее значение. Если вы хотите получить все значения, вы должны добавить их в список или аналогичную структуру. Например:

JSONArray json = req.getJSONArray("worldpopulation"); 
List<SuperHeroe> superHeroeList = new ArrayList<>(); 
for (int i = 0; i < json.length(); i++) {  
SuperHeroe superHeroe = new SuperHeroe(jsonOb.getInt(Configg.TAG_rank),jsonOb.getString(Configg.TAG_country),jsonOb.getString(Configg.TAG_population),jsonOb.getString(Configg.TAG_flag)); 
superHeroeList.add(superHeroe); 
} 

Тогда вы будете иметь все объекты, содержащиеся в ArrayList «superHeroeList».

+0

Огромное вам спасибо! Сейчас работает hahaha –

0

Вы для цикла итерации & каждый раз, когда он инициализирует новый экземпляр SuperHeroes до setterGetterClass. Таким образом, после последней итерации он будет содержать последние данные JsobObject. Попробуйте

  • Создайте ArrayList.

    ArrayList<SuperHeroes> superHeroesList = new ArrayList<SuperHeroes>(); 
    
  • Внутри вашего for петли

    SuperHeroes superHeroes = new SuperHeroes(jsonOb.getInt(Configg.TAG_rank),jsonOb.getString(Configg.TAG_country),jsonOb.getString(Configg.TAG_population),jsonOb.getString(Configg.TAG_flag); 
    superHeroesList.add(superHeroes); 
    

Теперь superHeroesList будет иметь все ваши объекты JSon.

+0

Огромное вам спасибо! Сейчас работает hahaha –

Смежные вопросы