質問: new listitem(image_url, home_item); listItems.add(item); } } ``` !スクリーンショット
回答: ネストしたfor文を使えばそうなるのは必然でしょう。 たとえば、配列 `array1 = ["1", "2"]` と配列 `array2 = ["a", "b", "c"]` を以下のようにfor文を回すと、処理順はコメントのようになります。 ``` for (String a1 : array1) { // 1 8 for (String a2 : array2) { // 2 4 6 9 11 13 System.out.println(a1 + " " + a2); // 3 5 7 10 12 14 } } ``` このとき、aやbになにが入っているかを考えると、 3 `"1 a"` 5 `"1 b"` 7 `"1 c"` 10 `"2 a"` 12 `"2 b"` 14 `"2 c"` と表示されることがわかると思います。 これと同じことが質問文にあるプログラムに起きているため、求めている出力結果が得られない状態が起きているのです。 さて、求めている出力ですが、 > > 木村「windows」児玉「apple」..「android」..「google」 > > > の「..」の部分はなにを示しているのかよく分からないので推測ですが、きっと名前が入ると仮定して回答します。 要は配列と配列の要素を1対1で対応させたい(2つの配列の要素数は同じとする)、という要件だとすると、for文をネストして回すのでは上手くいかないので、配列の要素番号を使って取り出すのが良いでしょう。 ``` for (int i = 0; i < home.length; i++) { listitem item = new listitem(home[i], image_urls[i]); listItems.add(item); } ``` ここからは余談になりますが、変数名、クラス名の命名はもう少し統一性をもたせると良いでしょう。 一般的に、Javaでは以下の命名規則が使用されます。 * クラス名はアッパーキャメルケース(単語の区切りごとに大文字、先頭の文字も大文字) * 変数名はローワーキャメルケース(最初だけ小文字で単語の区切りごとに大文字) また、配列の変数名に対して不可算名詞を使う場合、複数形を使えないのは分かるのですが、配列と分かるような命名を付けたい場合、名詞+Arrayを付けたりしますので、そういったテクニックを駆使して書き直してみると可読性が向上して良さそうですね。ご参考までに。(そもそも不可算なものを配列にするのはおかしいため、単語を選び直してみるのも1つの手です) ``` for (int i = 0; i < homeArray.length; i++) { ListItem item = new ListItem(homeArray[i], imageUrls[i]); listItems.add(item); } ```