我正在尝试使用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;
}
答案 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
;
尝试检查一下。