ここから本文です

java言語で環境はEclipseでandroidアプリの勉強をしてるんですがわからないところ...

risemara3106さん

2014/8/1221:29:39

java言語で環境はEclipseでandroidアプリの勉強をしてるんですがわからないところがあります。

次のリストのレイアウトをカスタマイズする例文で、date.add(item);というところは、HashMapで格納したitem.put("title",titles[i]);item.put("tag" , tags[i]);item.put("desc", descs[i]);の全要素をdate.add(item);に格納しているということですか?

import java.util.HashMap;
import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;


public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//メインのレイアウト
setContentView(R.layout.activity_main);

//リストに表示するデータを準備
String titles[] = {"革命のエチュード",
"G線上のアリア",
"ジャコンヌ",
"夜の女王のアリア",
"春の海"};

String tags[] = {"ピアノ",
"バイオリン",
"チェロ",
"声楽",
"箏"};

String descs[] ={"ピアノの詩人と言われたショパンの代表的なピアノ曲です。",
"バッハの作品。バイオリンのG線のみで演奏できることからこのタイトルで親しまれています",
"バッハの作品。バレティータ第2番の終曲です。",
"モーツァルト作曲のオペラ「魔笛」の中のアリアです。",
"宮崎道雄の作品です。曲の舞台は鞆の浦と言われています。"};

ArrayList<HashMap<String , String>> date = new
ArrayList<HashMap<String , String>>();
for(int i = 0; i < titles.length; i++) {
HashMap<String,String> item = new HashMap<String , String>();
item.put("title",titles[i]);
item.put("tag" , tags[i]);
item.put("desc", descs[i]);
date.add(item);
}

//HashMap配列とレイアウトとを関連付け
SimpleAdapter adapter = new SimpleAdapter(this, date,R.layout.list_item,
new String[] {"title","tag","desc"},
new int[] {R.id.title,R.id.tag,R.id.desc}
);

//アダプターをもとにリストを生成
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);

}

補足やっぱりそうだったんですか回答ありがとうです。dateなんですが、dataとスペル間違えてましたすいません。
あともうひとつ分からないところなんですが、ArrayList<HashMap<String , String>> date = new
ArrayList<HashMap<String , String>>(); ここはどういうことでしょうか?

閲覧数:
70
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

rindou240さん

2014/8/1307:32:45

そうですよ。

それをfor(int i = 0; i < titles.length; i++) で繰り返しています。

iが0のとき、itemには、革命のエチュード、ピアノ、ピアノの詩人と…の3つが格納されます。
それを3つまとめて dateというリストに追加しています。

ところで、質問者さんが作ったのではないでしょうが、リストが、dateなのが気になります。

Dateであれば、そういうクラスがあるのでその名前は使えないとエラーがでますが、dateはエラーにはならないけど、見たひとが日付だと思ってしまいます。
日付ではないものには使わないほうがいいです。

サンプルのよくないところは真似しないほうがいいですね。

  • rindou240さん

    2014/08/1317:15:26

    どこから説明が必要かわからないので…newはご存知だろう、から始めます。

    なぜ、itemに3つの値を入れ、それを3つまとめてdateに入れることができるんでしょう?

    ArrayListは、配列を実現するものですが、何段もあるタンスのようなものです。
    でもタンスの引き出しは縦横が同じサイズでないと、収まりません。

    例えば、ArrayList<String> a = new
    ArrayList<String >();
    は、String型の値がひとつ入る引き出しのあるタンスを用意しますよ、という宣言です。
    ただし、ArrayListは、引き出しの形は決まっていますが、何段あるかは未定で、自由に追加できます。

    今回は、タイトル、タグ、説明の3つをセットでひとつの引き出しに入れます。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2014/8/13 18:56:02

降参 分かりやすくありがとうございました。また分からないところがあったら教えてもらいたいです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。