2017-04-05 14 views
0

現在、自分のコードがデータベースからアイテムを1つ表示していますが、オンラインで見た後、データをアダプタに入れますが、データベースの最初の項目のみが表示されます。データベースのすべての項目を表示するためには、私は何を変更する必要がありますか?リストビューでデータベース項目を表示

MarksActivity.java

private void getData() { 
      String nume = editTextId.getText().toString().trim(); 
      if (nume.equals("")) { 
       Toast.makeText(this, "Numele tau", Toast.LENGTH_LONG).show(); 
       return; 
      } 
      loading = ProgressDialog.show(this,"Te rugam asteapta","Fetching...",false,false); 

      String url = Config.DATA_URL+editTextId.getText().toString().trim(); 

      StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        loading.dismiss(); 
        showJSON(response); 
       } 
      }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Toast.makeText(MarksActivity.this, error.getMessage(),Toast.LENGTH_LONG).show(); 
         } 
        }); 

      RequestQueue requestQueue = Volley.newRequestQueue(this); 
      requestQueue.add(stringRequest); 
     } 

     private void showJSON(String response){ 

      String nota=""; 
      String materie=""; 
      String profesor = ""; 
      try { 
       JSONObject jsonObject = new JSONObject(response); 
       JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
       for(i=0;i<result.length();i++) 
        Log.v("Result--",""+result.getString(i)); 
       JSONObject collegeData = result.getJSONObject(0); 
       nota = collegeData.getString(Config.KEY_NAME); 
       materie = collegeData.getString(Config.KEY_ADDRESS); 
       profesor = collegeData.getString(Config.KEY_VC); 

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

      } 



      String[] status = {"Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor}; 

      textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this, 
        android.R.layout.simple_list_item_1, status)); 
     } 

答えて

0

最後の値のみが示されている必要があります。上記のString [] Statusループを初期化して、各アイテムをループ内のステータスに追加することをお勧めします。あなたは結果を得るでしょう!

DemoObjectとしてモデルクラスを作成します。

public class DemoObject { 
    private String nota; 

    public String getNota() { 
     return nota; 
    } 

    public void setNota(String nota) { 
     this.nota = nota; 
    } 
} 

さて、

private void showJSON(String response){ 
      DemoObject demoObject = new DemoObject(); 
      List<DemoObject> list = new ArrayList(); 
      try { 
       JSONObject jsonObject = new JSONObject(response); 
       JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
       for(i=0;i<result.length();i++) 
        Log.v("Result--",""+result.getString(i)); 
       JSONObject collegeData = result.getJSONObject(0); 
       demoObject.setNota(collegeData.getString(Config.KEY_NAME)); 
       list.add(demoObject); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

最後に、

textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this, 
        android.R.layout.simple_list_item_1, list)); 
+0

がどのように正確に私はループ内でそれぞれを追加することができますか? –

+0

ループの上のString [] Statusを初期化すると機能しません –

+0

投稿を編集しました! –

0

問題は、あなたが文字列を初期化する必要があり showJson方法であります配列を先頭に追加して項目を追加する

私の理解あたりとして
private void showJSON(String response){ 

     List<String> status = new ArrayList<String>(); // since you don't know exactly how many elements are there in the json array 
     String nota=""; 
     String materie=""; 
     String profesor = ""; 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
      for(i=0;i<result.length();i++) { 
       Log.v("Result--",""+result.getString(i)); 
       JSONObject collegeData = result.getJSONObject(i); 
       nota = collegeData.getString(Config.KEY_NAME); 
       materie = collegeData.getString(Config.KEY_ADDRESS); 
       profesor = collegeData.getString(Config.KEY_VC); 
       status.add("Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor); 
      } 

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

     } 


     textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this, 
       android.R.layout.simple_list_item_1, status)); 
    } 
+0

リストとArrayListをXMLで宣言する必要はありますか? –

+0

これらは 'java.util'パッケージで提供されていないので、' import java.util.List; import java.util.ArrayList; 'ファイルの先頭にある –

+0

まだDBの最初の項目しか表示されません –

0

、あなたのshowJSON方法は、以下のようにする必要があります:

private void showJSON(String response){ 

    String nota=""; 
    String materie=""; 
    String profesor = ""; 
    String[] status = null; 
    try { 
     JSONObject jsonObject = new JSONObject(response); 
     JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
     status = new String[result.length()]; 

     for(i=0;i<result.length();i++) { 
      Log.v("Result--",""+result.getString(i)); 

      JSONObject collegeData = result.getJSONObject(i); 
      nota = collegeData.getString(Config.KEY_NAME); 
      materie = collegeData.getString(Config.KEY_ADDRESS); 
      profesor = collegeData.getString(Config.KEY_VC); 

      status[i] = "Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor;  
     } 


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

    } 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(MarksActivity.this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, status); 
    textViewResult.setAdapter(adapter); 
} 
+0

シンボルステータスを解決できません –

+0

まだ最初のアイテムしか表示されません –

+0

この編集された回答が有効です。私はtextViewResultはリストビューだと思うし、他のものは上記のようにArrayAdapter アダプタを定義し、毎回宣言していると思う。デバッグして、結果JSONArrayのエントリが増えていることを確認してください。これがうまくいくことを願っています。 –

0
private void getData() { 
     String nume = editTextId.getText().toString().trim(); 
     if (nume.equals("")) { 
      Toast.makeText(this, "Numele tau", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     loading = ProgressDialog.show(this,"Te rugam asteapta","Fetching...",false,false); 

     String url = Config.DATA_URL+editTextId.getText().toString().trim(); 

     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 
     }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(MarksActivity.this, error.getMessage(),Toast.LENGTH_LONG).show(); 
        } 
       }); 

     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
    } 



    private void showJSON(String response){ 

    List<String> status = new ArrayList<String>(); // since you don't know exactly how many elements are there in the json array 
    String nota=""; 
    String materie=""; 
    String profesor = ""; 
    try { 
     JSONObject jsonObject = new JSONObject(response); 
     JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
     for(i=0;i<result.length();i++) { 
      Log.v("Result--",""+result.getString(i)); 
     JSONObject collegeData = result.getJSONObject(i); 
     nota = collegeData.getString(Config.KEY_NAME); 
     materie = collegeData.getString(Config.KEY_ADDRESS); 
     profesor = collegeData.getString(Config.KEY_VC); 
     status.add("Nota:\t"+nota+"\nMaterie:\t" +materie+ "\nProfesor:\t"+ profesor); 
     } 

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

    } 


    textViewResult.setAdapter(new ArrayAdapter<String>(MarksActivity.this, 
      android.R.layout.simple_list_item_1, status)); 
} 
関連する問題