2016-05-20 2 views
1

私はリストビューをデータで埋めるべきforループを持っていますが、私のjsonファイルで3つのうちの最初の位置からデータを得ることしかできません。リストビューは私のforloopから満たされていません、どうしたのですか?

Heres私の問題コードです。 http://api.champion.gg/champion/ekko/「この画像enter image description here

ああ、これはHERESにどこリストビューのXMLを助け場合 - 私はエラーが

imgtest = (ImageView) findViewById(R.id.imageView); 

    // http://api.champion.gg/champion/Ekko/ 
    new JSONTask().execute("http://api.champion.gg/champion/ekko/"); 

     Champ = (ListView) findViewById(R.id.listView); 
} 

public class JSONTask extends AsyncTask<String, String, List<Layoutmodel>> { 
    @Override 
    protected List<Layoutmodel> doInBackground(String... params) { 
     HttpURLConnection connection = null; 
     BufferedReader reader = null; 


     try { 
      URL url = new URL(params[0]); 

      connection = (HttpURLConnection) url.openConnection(); 
      connection.connect(); 

      InputStream stream = connection.getInputStream(); 

      reader = new BufferedReader(new InputStreamReader(stream)); 

      StringBuffer buffer = new StringBuffer(); 

      String line = ""; 

      while ((line = reader.readLine()) != null) { 
       buffer.append(line); 
      } 

      String finalJson = buffer.toString(); 

      JSONArray jsonarray = new JSONArray(finalJson); 
      List<Layoutmodel> LayoutModelList = new ArrayList<>(); 

      for (int i = 0; i < jsonarray.length(); i++) { 
       JSONObject finalObject = jsonarray.getJSONObject(i); 

      Layoutmodel layoutmodel = new Layoutmodel(); 
      layoutmodel.setChampionName2(finalObject.getString("key")); 
      layoutmodel.setRole(finalObject.getString("role")); 

      ChampionName = finalObject.getString("key"); 
      String role = finalObject.getString("role"); 
      String overallPosition = finalObject.getString("overallPosition"); 

      JSONObject ItemArray4 = new JSONObject(overallPosition); 
      String champpos = ItemArray4.getString("position"); 
      Log.v("d", champpos); 

      String items = finalObject.getString("items"); 

      JSONObject ItemArray = new JSONObject(items); 


      item2 = ItemArray.getString("mostGames"); 
      item3 = ItemArray.getString("highestWinPercent"); 
      JSONObject ItemArray2 = new JSONObject(item2); 
      JSONObject ItemArray3 = new JSONObject(item3); 
      item3 = ItemArray2.getString("items"); 
      item4 = ItemArray3.getString("items"); 


      JSONArray jsonarray2 = new JSONArray(item3); 
      JSONArray jsonarray3 = new JSONArray(item4); 

      JSONObject finalObject2 = jsonarray2.getJSONObject(jsonarray2.length() - 6); 
      ItemName = finalObject2.getString("name"); 

      JSONObject finalObject3 = jsonarray2.getJSONObject(jsonarray2.length() - 5); 
      ItemName2 = finalObject3.getString("name"); 

      JSONObject finalObject4 = jsonarray2.getJSONObject(jsonarray2.length() - 4); 
      ItemName3 = finalObject4.getString("name"); 

      JSONObject finalObject5 = jsonarray2.getJSONObject(jsonarray2.length() - 3); 
      ItemName4 = finalObject5.getString("name"); 

      JSONObject finalObject6 = jsonarray2.getJSONObject(jsonarray2.length() - 2); 
      ItemName5 = finalObject6.getString("name"); 

      JSONObject finalObject7 = jsonarray2.getJSONObject(jsonarray2.length() - 1); 
      ItemName6 = finalObject7.getString("name"); 

      //Highest win names 
      JSONObject finalObject8 = jsonarray3.getJSONObject(jsonarray3.length() - 6); 
      ItemNameHW = finalObject8.getString("name"); 

      JSONObject finalObject9 = jsonarray3.getJSONObject(jsonarray3.length() - 5); 
      ItemName2HW = finalObject9.getString("name"); 

      JSONObject finalObject10 = jsonarray3.getJSONObject(jsonarray3.length() - 4); 
      ItemName3HW = finalObject10.getString("name"); 

      JSONObject finalObject11 = jsonarray3.getJSONObject(jsonarray3.length() - 3); 
      ItemName4HW = finalObject11.getString("name"); 

      JSONObject finalObject12 = jsonarray3.getJSONObject(jsonarray3.length() - 2); 
      ItemName5HW = finalObject12.getString("name"); 

      JSONObject finalObject13 = jsonarray3.getJSONObject(jsonarray3.length() - 1); 
      ItemName6HW = finalObject13.getString("name"); 


      layoutmodel.setItem1(ItemName); 
      layoutmodel.setItem2(ItemName2); 
      layoutmodel.setItem3(ItemName3); 
      layoutmodel.setItem4(ItemName4); 
      layoutmodel.setItem5(ItemName5); 
      layoutmodel.setItem6(ItemName6); 

      layoutmodel.setItem1HW(ItemNameHW); 
      layoutmodel.setItem2HW(ItemName2HW); 
      layoutmodel.setItem3HW(ItemName3HW); 
      layoutmodel.setItem4HW(ItemName4HW); 
      layoutmodel.setItem5HW(ItemName5HW); 
      layoutmodel.setItem6HW(ItemName6HW); 


      layoutmodel.setRole(role); 
      layoutmodel.setChampionName2(ChampionName); 
      layoutmodel.setChamppos(champpos); 
      LayoutModelList.add(layoutmodel); 

      return LayoutModelList; 
     } 

をあるこのJSONからだから、このコードリターンを考えてコードのバージョンを編集

であり、

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/scrollView" > 

     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/listView" 
      android:layout_weight="1" 
      android:layout_alignParentTop="true" /> 
    </ScrollView> 
</LinearLayout> 

+0

!あなたはその問題がどこにあると思うかに絞り込むことができますか? –

+0

@AleksGもう一度チェックすれば、私はこのエラーを引き起こしたとは思わないすべてのものを乗せてしまった! – Kripzy

+0

そして、その実装されたArrayListをどこで使用していますか? –

答えて

2

あなたはforloopの中にarraylistを戻しています。そのため、リストにオブジェクトを1つだけ追加します。 return文をforループの外側に配置する必要があります。

for (int i = 0; i < jsonarray.length(); i++) { 
    //Your json logic 
    LayoutModelList.add(layoutmodel); 
} 
return LayoutModelList; 
+0

ありがとう、 – Kripzy

+0

あなたは大歓迎です!ハッピーコーディング – Ricardo

1

あなたの問題は、ここであなたのリストビューで

android:layout_height="wrap_content" 

です。

listviewsはコンテンツをラップすることはできません。これは、設定されたサイズまたは塗りつぶしの親でなければなりません。なぜあなたはスクロールビューでリストビューを持っていますか?私はこれを試して、あなただけのリストビュー

を持つべきだと思う:

多くのコードだ
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/listView" /> 

</LinearLayout> 
+0

こんにちは、私は脳のおならを持っていたし、listviewsをスクロールできることを忘れてしまった!しかし、私もあなたが提案したものに自分のコードを変更したので、ありがとう! – Kripzy

関連する問題