カスタムの複数レベルのオブジェクト (ここでは、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;
すべてがうまくいきます!しかし、このリストデータの配列が必要なので、それをアダプターに入れて操作することができます。私のコードが失敗する理由と、何が間違っているのか誰かが知っていますか?