2017-06-15 21 views
0

にJSONを追加しますが、私はそのようなリストビューでアイテムをリストアンドロイドは</p> <p>、<string>私がリストビューにJSONを追加したい

見当がつかない。

public class ListSectionActivity extends Activity { 

    private AndroidListAdapter list_adapter; 
    private ListView lv_android; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list_section); 

     DataCollection.data_arr=new ArrayList<DataCollection>(); 

     DataCollection.data_arr.add(new DataCollection("apple")); 
     DataCollection.data_arr.add(new DataCollection("car")); 


     lv_android=(ListView)findViewById(R.id.lv_android); 

     list_adapter=new AndroidListAdapter(ListSectionActivity.this, R.layout.list_item,DataCollection.data_arr); 


     ListSeparateAdapter<DataCollection> listsectionAdapter = new ListSeparateAdapter<DataCollection>(ListSectionActivity.this, 
       list_adapter, R.layout.enroll_section_list, R.id.tv_section); 

     lv_android.setAdapter(listsectionAdapter); 

    } 

} 

しかし、私はjsonから項目をリストしたいと思います。 私のJSONコード:

@Override 
     protected void onPostExecute(String content) { 
      try { 
       JSONObject jsonObject = new JSONObject(content); 
       JSONArray jsonArray = jsonObject.getJSONArray("main"); 
       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONObject c = jsonArray.getJSONObject(i); 
        JSONArray server = c.getJSONArray("home"); 
        for(int j=0; j<server.length(); j++){ 
         JSONObject serverObject = server.getJSONObject(j); 

            string rank = serverObject.getString("rank"); 


        } 

       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

私のJSON。

{ 
    "main":[ 
    { 
     "home":[ 
     {"rank":"33"}, 
     {"rank":"72"}, 
     {"rank":"49"} 
     ] 
    } 
    ] 
} 

私はリストビューに「文字列ランク」を追加します。

どうすればいいですか?

ありがとうございました。

編集:jsonをlistviewに追加できましたが、最初のjsonアイテムのみをリストできます。私の新しいコード

public class ListSectionActivity extends Activity { 

    private AndroidListAdapter list_adapter; 
    private ListView lv_android; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list_section); 

     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       new ReadJSON().execute("url"); 
      } 
     }); 
    } 

    class ReadJSON extends AsyncTask<String, Integer, String> { 

     @Override 
     protected String doInBackground(String... params) { 
      return readURL(params[0]); 
     } 

     @Override 
     protected void onPostExecute(String content) { 
      try { 
       JSONObject jsonObject = new JSONObject(content); 
       JSONArray jsonArray = jsonObject.getJSONArray("main"); 
       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONObject c = jsonArray.getJSONObject(i); 
        JSONArray server = c.getJSONArray("home"); 
        for(int j=0; j<server.length(); j++){ 
         JSONObject serverObject = server.getJSONObject(j); 


         String rank = serverObject.getString("rank"); 

         DataCollection.data_arr=new ArrayList<DataCollection>(); 
         DataCollection.data_arr.add(new DataCollection(rank)); 
        } 

       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      lv_android=(ListView)findViewById(R.id.lv_android); 

      list_adapter=new AndroidListAdapter(ListSectionActivity.this, R.layout.list_item,DataCollection.data_arr); 

      ListSeparateAdapter<DataCollection> listsectionAdapter = new ListSeparateAdapter<DataCollection>(ListSectionActivity.this, 
        list_adapter, R.layout.enroll_section_list, R.id.tv_section); 

      lv_android.setAdapter(listsectionAdapter); 
     } 
    } 


    private static String readURL(String theUrl) { 
     StringBuilder content = new StringBuilder(); 
     try { 

      URL url = new URL(theUrl); 

      URLConnection urlConnection = url.openConnection(); 

      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
      String line; 

      while ((line = bufferedReader.readLine()) != null) { 
       content.append(line + "\n"); 
      } 
      bufferedReader.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return content.toString(); 
    } 

} 

DataCollection

public class DataCollection { 
    public String name; 

    public static ArrayList<DataCollection> data_arr=null; 
    public DataCollection(String name){ 


     this.name=name; 
    } 
} 
+0

ポストに実行する場合は、直接data_arrに追加することができますので、私は、JSONの@quicklearner –

+0

はなく、内部のOnCreate、DataCollection.data_arrはグローバルに同じクラスにするか、別の送信であればありますasynctaskへのdata_arrの参照がそこから変更できるようにします。 – Johny

+0

を追加したポストJSONもここ –

答えて

0

更新:あなたはあなたのonPostexecute内でこれを行うことができます。ランク配列をリストビュー内に保存し、アダプタ内で使用します。

protected void onPostExecute(String content) { 
    DataCollection.data_arr=new ArrayList<DataCollection>(); 
    try { 

     JSONObject jsonObject = new JSONObject(content); 
     JSONArray jsonArray = jsonObject.getJSONArray("main"); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject c = jsonArray.getJSONObject(i); 
      JSONArray server = c.getJSONArray("home"); 
      for(int j=0; j<server.length(); j++){ 
       JSONObject serverObject = server.getJSONObject(j); 

       String rank = serverObject.getString("rank"); 

        DataCollection.data_arr.add(new DataCollection(rank)); 


      } 

     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    if(!data_arr.isEmpty()){ 

     //you can set the adapter and listview here. Something like this 
     your_list_adapter=new AndroidListAdapter(this, R.layout.list_item,data_arr); 

     your_lv_android.setAdapter(list_adapter); 


    } 
} 
+0

こんにちは私は自分の投稿を更新しました。これをチェックしてください。ありがとう – Johny

+0

よろしくお願いします。 DataCollectionクラスの外観はどうですか?また、あなたのリストビューのすべての行に何を表示したいですか? –

+0

投稿するためにDataCollectionを追加しました。私はlistviewのすべてのランクを表示したいが、私は最初のランクしか表示できない。 – Johny

関連する問題