building array of custom objects causes nullpointerexception
-
22-06-2021 - |
Question
Im declaring from a big list of custom, multiple level, objects (here called venueCounter) a simple array of custom objects, with just the information needed for filling a list. I do this because its easier to sort my list and create sections in my list.
But when i try it i get a nullpointerexception. I think that is very weird, because when i tried to fill a stringArray it worked fine. Here is my code that fails:
ListData ld[]= new ListData[venueCounter.size()];
int selectedPic;
JJsonResponse e;
for(int i=0;i < venueCounter.size() ;i++){
selectedPic = 0;
e = venueCounter.get(i);
ld[i]= null;// data in listdata object
ld[i].name=e.venue.name;
ld[i].tip_nl=e.venue.tip;
ld[i].tip_en=e.venue.tip_en;
ld[i].venueID=e.venue.id;
// foto uitkiezien
if (e.venue.venue_photos.isEmpty() == false){ // there is a picture
for(int j=0; j < e.venue.venue_photos.size() ;j++){ // use user selected picture
if(e.venue.venue_photos.get(j).selected == true){
selectedPic = j;
}
ld[i].photoUrl=e.venue.venue_photos.get(selectedPic).medium;
}
}else
{
ld[i].photoUrl="url for when there is no url";
}
Log.i("url nr. " + String.valueOf(i), ld[i].photoUrl);
}
and the line with the error is:
ld[i].name=e.venue.name;
But the strange thing is, that when i declare a string array and fill it just the same:
String name[]=new String[venueCounter.size()];
and further in the code
name[i]=e.venue.name;
everything just works fine! But i want this array of listdata, so i can put it in my adapter and just work with it. Does anyone knows why my code fails and what im doing wrong?
Solution
I think the main problem here is the line with
ld[i]= null;
If you make it null it wont be able to save any data. You should do a new ListData()... instead of the null.
It works with Strings because whenever you make a string equal to another, java creates the new object and so on.
Hope I have explained it correctly.