2016-08-19 10 views
-1

Setter Getterクラスの変数がJSONの最後のオブジェクトのみを取得する理由を知りたいのですが?すべてのjsonオブジェクトをsetter getter変数にフェッチして、それをrecyclerviewに転送できるようになっています。Setter Getterクラス変数がJSON、android、recyclerViewの最後のオブジェクトのみを取得する理由

はここで、Imはbegginer、plsはあなたのforループの反復ごとに「setterGetterClass」変数を設定している

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

変数は1つだけですが、複数のオブジェクトへの参照をどのように保持すると思いますか? – njzk2

答えて

0

役立つコードの一部です。ループが終了すると、 "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); 
} 

次に、「superHeroeList」ArrayListに含まれるすべてのオブジェクトを取得します。

+0

本当にありがとうございました!それは今hahahaで動作します –

0

forループは、新しいSuperHeroesインスタンスをsetterGetterClassに初期化するたびに&を反復処理します。最後の反復の後、最後のJsobObjectデータを保持します。お試しください

  • ArrayListを作成してください。あなたの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); 
    

インサイド

ArrayList<SuperHeroes> superHeroesList = new ArrayList<SuperHeroes>(); 
  • superHeroesListは、すべてのJSONオブジェクトを持つことになります。

  • +0

    ありがとう!それは今hahaha動作 –

    関連する問題