0

80項目のようなリストに表示したいのですが、テストを行った10の後、アプリケーションが停止し、logcatがArrayIndexOutOfBoundsExceptionと表示します。

リストをもっと大きくするにはどうすればよいですか?

私のコード:

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.galerie_galerie);

        rowItems = new ArrayList<RowItem>();
        for (int i = 0; i < titles.length; i++) {
            RowItem item = new RowItem(images[i], titles[i], descriptions[i]);
            rowItems.add(item);
        }

        listView = (ListView) findViewById(R.id.list);
        CustomListViewAdapter adapter = new CustomListViewAdapter(this,
                R.layout.list_item, rowItems);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(this);
    }
4

1 に答える 1

3

imagesまたはdescriptions配列のいずれかが配列ほど大きくないため、このエラーが発生しますtitles

たとえば、次の場合:

  • 配列titlesには10個の要素があります
  • 配列imagesには10個の要素があります
  • あなたdescriptionには9つの要素があります

forループの10番目の要素にアクセスしようとすると、タイトルと画像から10番目の要素を引き出しますが、説明にはそれほど多くの要素が含まれていないため、ArrayIndexOutOfBoundsException

これを回避する方法は、データと必要な結果に完全に依存します。すべてのタイトルの画像と説明をサポートするデータがある場合は、データの初期化中に間違いを犯した可能性があります。それは簡単な修正かもしれません。

すべてのタイトルの画像や説明をサポートするデータがない場合は、forループ内でチェックを行って、タイトルに使用できる画像や説明があるかどうかを確認する必要があります。存在しない場合(チェックしている現在のインデックスに配列の長さが渡される)、プレースホルダーをにスローすることができますArrayList。その場合は、後で実際に使用するときに処理することを忘れないでください。

于 2013-03-12T18:35:44.847 に答える