【问题标题】:building array of custom objects causes nullpointerexception构建自定义对象数组会导致 nullpointerexception
【发布时间】:2012-07-21 13:29:35
【问题描述】:

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

但是当我尝试它时,我得到一个空指针异常。我认为这很奇怪,因为当我尝试填充 stringArray 时它工作正常。这是我失败的代码:

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

错误所在的行是:

ld[i].name=e.venue.name;

但奇怪的是,当我声明一个字符串数组并填充它时:

String name[]=new String[venueCounter.size()];

在代码中进一步

name[i]=e.venue.name;

一切正常!但我想要这个列表数据数组,所以我可以把它放在我的适配器中并使用它。 有谁知道我的代码为什么失败以及我做错了什么?

【问题讨论】:

    标签: android arrays custom-object


    【解决方案1】:

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

     ld[i]= null;
    

    如果您将其设为 null,它将无法保存任何数据。你应该做一个 new ListData()... 而不是 null。

    它适用于字符串,因为每当您使一个字符串等于另一个字符串时,java 都会创建新对象等等。

    希望我的解释正确。

    【讨论】:

    • 你是对的!谢谢你。我想我会在我的数组中创建一个新的(空)字段,然后在下一行中填充它。
    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2012-05-06
    • 2021-07-08
    • 1970-01-01
    • 2014-06-20
    • 2015-05-15
    • 2020-03-04
    相关资源
    最近更新 更多