Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 生成自定义对象数组会导致nullpointerexception_Android_Arrays_Custom Object - Fatal编程技术网

Android 生成自定义对象数组会导致nullpointerexception

Android 生成自定义对象数组会导致nullpointerexception,android,arrays,custom-object,Android,Arrays,Custom Object,我从一个大的自定义多级对象列表(这里称为venueCounter)中声明了一个简单的自定义对象数组,其中只包含填充列表所需的信息。我这样做是因为对列表进行排序和在列表中创建节更容易 但当我尝试它时,我得到了一个nullpointerexception。我觉得这很奇怪,因为当我尝试填充字符串数组时,效果很好。以下是我失败的代码: ListData ld[]= new ListData[venueCounter.size()]; int selectedPic; JJsonRe

我从一个大的自定义多级对象列表(这里称为venueCounter)中声明了一个简单的自定义对象数组,其中只包含填充列表所需的信息。我这样做是因为对列表进行排序和在列表中创建节更容易

但当我尝试它时,我得到了一个nullpointerexception。我觉得这很奇怪,因为当我尝试填充字符串数组时,效果很好。以下是我失败的代码:

 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);
     }
但奇怪的是,当我声明一个字符串数组并填充它时,结果是一样的:

String name[]=new String[venueCounter.size()];
以及进一步的守则

name[i]=e.venue.name;
一切都很好!但是我想要这个listdata数组,这样我就可以把它放在我的适配器中并使用它了。
有人知道我的代码为什么会失败,我做错了什么吗?

我认为这里的主要问题是与

 ld[i]= null;
如果将其设为空,则无法保存任何数据。您应该执行一个新的ListData()。。。而不是空值

它与字符串一起工作,因为每当您将一个字符串与另一个字符串相等时,java就会创建新对象,以此类推


希望我解释得对。

你说得对!非常感谢。我想我会在数组中创建一个新的(空)字段,然后在下一行中填充它。
 ld[i]= null;