奇怪的NullPointException

时间:2017-12-14 21:51:11

标签: java android nullpointerexception android-recyclerview android-cardview

我正在尝试使用recycler-view和card-view显示来自mysql数据库的数据,但我正面临这样的错误消息:

  

java.lang.NullPointerException:尝试调用接口方法   空对象引用上的'int java.util.List.size()'

所有东西似乎都能正常工作,因为我能够在循环中显示在(​​Log)上检索到的数据,而当我尝试在我的List data_list上添加数据时,每件事情都可以,因为我能够知道我的data_list返回的行数

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

但是当我试图访问我的自定义适配器上的data_list时:

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

它警告我,我无法访问my_data,因为它是null。

我的代码中从我的数据库中检索数据的部分:

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;
        }

2 个答案:

答案 0 :(得分:0)

通常,执行getItemCount()时尚未分配my_data。在适配器构造this.my_data = data_list中调用此方法;

答案 1 :(得分:0)

该类获得的List<MyData> data_list很可能为null,然后,当this.my_data = data_list;执行此操作时this.my_data = null;

尝试检查一下。