0

カスタムの複数レベルのオブジェクト (ここでは、venueCounter と呼ばれます) の大きなリストから、リストを埋めるために必要な情報だけを含む、カスタム オブジェクトの単純な配列を宣言します。これを行うのは、リストを並べ替えたり、リストにセクションを作成したりするのが簡単だからです。

しかし、試してみると、nullpointerexception が発生します。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;

すべてがうまくいきます!しかし、このリストデータの配列が必要なので、それをアダプターに入れて操作することができます。私のコードが失敗する理由と、何が間違っているのか誰かが知っていますか?

4

1 に答える 1

2

ここでの主な問題は、

 ld[i]= null;

null にすると、データを保存できなくなります。null の代わりに new ListData()... を実行する必要があります。

文字列を別の文字列と等しくするたびに、Javaが新しいオブジェクトなどを作成するため、文字列で機能します。

正しく説明できたことを願っています。

于 2012-07-21T13:35:52.653 に答える