-4

나는 재활용 뷰 ANS 카드보기와 MySQL 데이터베이스에서 데이터를 표시하기 위해 노력하고있어,하지만 난이 오류 메시지가 직면하고 있습니다 :이상한 NullPointException

하여 java.lang.NullPointerException : 인터페이스 메소드를 호출하는 시도를 내가 내 루프 (로그)에 검색된 데이터를 표시 할 수이기 때문에

모든 것이 제대로 작동하는 것 같다 null 객체 참조에 'java.util.List.size()를 int로'내가 '할 때 내 목록 data_list에 데이터를 추가하려고하면 모든 데이터가 내 data_list에 의해 반환 된 행의 수를 알 수 있기 때문에 모든 것이 OK입니다

Log.e("number of lines return", String.valueOf(data_list.size())); 

하지만 난 내 사용자 정의 어댑터에 DATA_LIST에 도달하기 위해 노력하고있어 때

@Override 
public int getItemCount() { 
    return my_data.size(); 
} 

그것은이 널 (null)이기 때문에 내가 my_data에 액세스 할 수없는 나에게 경고합니다.

데이터베이스 내에서 데이터를 검색 내 코드의 일부 :에서 getItemCount 실행 중에

private void load_data_from_server(final int id) { 
    //Log.e("iddddsss", String.valueOf(id)); 
    AsyncTask<Integer,Void,Void> task =new AsyncTask<Integer, Void, Void>(){ 

     @Override 
     protected Void doInBackground(Integer... integers) { 

      OkHttpClient client = new OkHttpClient(); 
      Request request = new Request.Builder() 

        .url("http://www.unhabitatrdcongo.org/Recycler-android-mySQL/index2.php?id="+id) 
        .build(); 
      try { 
       Response response = client.newCall(request).execute(); 
       JSONArray array = new JSONArray(response.body().string()); 



       for (int i=0; i<array.length(); i++){ 
        JSONObject object = array.getJSONObject(i); 

        Integer idd = object.getInt("id"); 
        String des = object.getString("description").toString(); 
        String im =object.getString("image").toString(); 

        MyData data = new MyData(idd, des, im); 

        Log.e("errr", data.getDescription().toString()); 
        data_list.add(data); 


       } 

     Log.e("number of lines read", String.valueOf(data_list.size())); 

      } catch (IOException e) { 
       e.printStackTrace(); 
       Log.e("erreur IO EXCEPTION", e.toString()); 
      } catch (JSONException e) { 
       System.out.print("End of content"); 
       Log.e("erreur JSON",e.toString()); 
      } 
      return null; 
     } 
+0

그럼 어디서나 'my_data'를 설정합니까? 나는 그것을 볼 수 없다. 그리고 그 경우에 왜 그것이 null이라는 사실을 놀라게합니까? –

+1

더 많은 코드보기! – Xenolion

답변

0

일반적 my_data 아직 할당되지 않은(). 이 메소드는 어댑터 구성에서 this.my_data = data_list;

0

클래스가 가져 오는 List<MyData> data_list 일 가능성이 높습니다. 그리고 this.my_data = data_list;이 작업을 수행 할 때 this.my_data = null;

확인해보십시오.

+0

공용 클래스 CustomAdapter는 RecyclerView.Adapter를 확장합니다. { private context context; 개인 목록 my_data; 공용 CustomAdapter (컨텍스트 컨텍스트, 목록 데이터 목록) { this.context = context; this.my_data = data_list; } –

+0

같은 일로, 'CustomAdapter'가 매개 변수로받는 목록이 null 인 것처럼 보입니다. 당신은 당신의 proyect를 디버그하려고 했습니까? –