2017-07-18 10 views
0

こんにちは私は、テスト用のアンドロイドアプリケーションを.phpファイルのJSONのエコーからMySQLデータベースにリンクしています。JSONオブジェクトから変数を入力

データ全体をArrayListに取り込むことができましたが、データを変数に分割したいので、実際には見つけられません。

私は

マイMainActivity.java パブリッククラスMainActivityがAppCompatActivity {

ListView list; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     list = (ListView) findViewById(R.id.lvLista); 

     getData(); 
    } 

    public void getData() 
    { 
     AsyncHttpClient client = new AsyncHttpClient(); 
     String url = "http://www.kukitosoft.com/android/api.php"; 

     // RequestParams params = new RequestParams(); 
     // params.put("campo", "valor a fitrar"); 
     //Esto iria en el null del client.post 

     client.post(url, null, new AsyncHttpResponseHandler() { 
      @Override 
      public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { 
       if (statusCode == 200) 
       { 
        loadList(getDataJSON(new String(responseBody))); 
       } 
      } 

      @Override 
      public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { 

      } 
     }); 
    } 


    public void loadList(ArrayList<String> data) 
    { 
     ArrayAdapter<String> adapter = 
       new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data); 
     list.setAdapter(adapter); 
    } 

    public ArrayList<String> getDataJSON(String response) 
    { 
     ArrayList<String> list = new ArrayList<String>(); 
     try 
     { 
      JSONArray jsonArray = new JSONArray(response); 
      String texto; 

      for(int i=0; i<jsonArray.length(); i++) 
      { 
       texto = jsonArray.getJSONObject(i).getString("id") + " " + 
         jsonArray.getJSONObject(i).getString("nombre") + " " + 
         jsonArray.getJSONObject(i).getString("descripcion") + " " + 
         jsonArray.getJSONObject(i).getString("calificacion") + " "; 
       list.add(texto); 
      } 
     } 

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

     return list; 
    } 
} 
+0

あなたが分離するようにしたいです個々のリストのすべての値(例: "id"、 "nombre") –

+0

はい、それは私が望むものです – Natarr

+0

それを解析してモデルオブジェクトに保存する必要があります。 id、nombreなどをパラメータとしてモデルクラスを作成します。次に、クラスオブジェクトを作成し、jsonArray.getJSONObject(i).getString( "id")を使用して各パラメータに値を割り当て、arraylistにそのオブジェクトを追加して、個々の値を持つオブジェクトのリストを取得します。 入力時に同じリストを使用してUIに表示することができます –

答えて

1

まず、あなたのためのさまざまなゲッター/セッターでPOJOクラスを作成を拡張JSON通信を行うためにloopJライブラリを使用しています必須フィールド。

public class MyResponse(){ 

    private List<String> idList; 
    private List<String> nombreList; 
    private List<String> descList; 
    private List<String> califList; 

    public void setIdList(List<String> list){ 
    this.idList = list; 
    } 

    public void getIdList(){ 
    return idList; 
    } 

    public void setNombreList(List<String> list){ 
    this.nombreList = list; 
    } 

    public void getNombreList(){ 
    return nombreList; 
    } 

    public void setDescList(List<String> list){ 
    this.descList = list; 
    } 

    public void getDescList(){ 
    return descList; 
    } 

    public void setCalifList(List<String> list){ 
    this.califList = list; 
    } 

    public void getCalifList(){ 
    return califList; 
    } 

} 

今、各応答を解析し、getDataJSON(からのデータをバック取得するにMyResponseタイプ

  public MyResponse getDataJSON(String response) 
        { 
         MyResponse myResponse = new MyResponse(); 
         ArrayList<String> idList = new ArrayList<String>(); 
         ArrayList<String> nombreList = new ArrayList<String>(); 
         ArrayList<String> descList = new ArrayList<String>(); 
         ArrayList<String> califList = new ArrayList<String>(); 

         try 
         { 
          JSONArray jsonArray = new JSONArray(response); 

          for(int i=0; i<jsonArray.length(); i++) 
          { 
           idList.add(jsonArray.getJSONObject(i).getString("id")); 

    nombreList.add(jsonArray.getJSONObject(i).getString("nombre")); 
           descList.add(jsonArray.getJSONObject(i).getString("descripcion")); 
           califList.add(jsonArray.getJSONObject(i).getString("calificacion")); 
          } 

          myResponse.setIdList(idList); 
          myResponse.setNombreList(nombreList); 
          myResponse.setDescList(descList); 
          myResponse.setCalifList(califList); 

          return myResponse; 
         } 

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

         return list; 
        } 

のリストに追加します)

 MyResponse myResponse = getDataJSON(new String(responseBody))); 
    ArrayList<String> idList = myResponse.getIdList(); 
    ArrayList<String> nombreList = myResponse.getNombreList(); 
    ArrayList<String> descList = myResponse.getDescList(); 
    ArrayList<String> califList = myResponse.getCalifList(); 
+0

'for'の後に 'idList'、 'nombreList'などにはどこに値を指定しますか? – Natarr

+0

私の間違いは、更新された答えを確認してください! –

+0

ああ、ありがとう!今私はそれを行う方法を理解し、もう一度ありがとう! – Natarr

関連する問題