2017-04-05 2 views
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){ 

      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

MarksActivity.java. 루프 위의 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

내 XML에서 목록 및 ArrayList를 선언해야합니까? –

+0

그들은'java.util' 패키지에 제공되지 않으므로'import java.util.List; 가져 오기 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는 listview ..이고 위와 같이 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)); 
} 
관련 문제