【发布时间】:2018-05-29 02:10:16
【问题描述】:
我正在尝试使用 recycler-view ans 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,因为它为空。
从我的数据库中检索数据的代码部分:
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;
}
【问题讨论】:
-
那么您是否将
my_data设置在任何地方?我看不到它。在那种情况下,为什么它是 null 会让你感到惊讶? -
显示更多代码!
标签: java android nullpointerexception android-recyclerview android-cardview