2011年8月3日水曜日

Androidアプリ開発日記(2011/08/02)

Androidアプリにおいて項目を表示したいときはListViewを使うといいみたい.
ListViewの利点としては,コレと組み合わせて使うAdapterを上手く調整すれば,いろんなレイアウトの項目を作ることができるということ.
まずはベーシックな形から見てみましょう.

ListView view = new ListView(this);

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1);
adapter.add("aaa");
adapter.add("bbb");
adapter.add("ccc");
view.setAdapter(adapter);
this.setContentView(view);
上のように作ったときの結果が次の図の感じ.
文字列から直接項目を作りたいときなどはこういう風にすれば簡単に作ることができる.

次にもう少し凝ったレイアウトを作ってみよう.
例えば,各項目の左端に図を表示し,かつ項目の文字列をその右側に持つようなもの.
このためにはまずは専用のAdapterを作成する.
public class ExAdapter extends BaseAdapter {
Context context;
List list;

/**
* コンストラクタ
*/
public ExAdapter(Context context) {
this.context = context;
this.list = new ArrayList();
 }

 public void add(String str) {
  this.list.add(str);
 }

 @Override
 public int getCount() {
  return this.list.size();
 }

 @Override
 public Object getItem(int position) {
  return this.list.get(position);
 }

 @Override
 public long getItemId(int position) {
  return position;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  ViewHolder holder = null;
  if (convertView == null) {
   LinearLayout layout = new LinearLayout(this.context);
   layout.setOrientation(LinearLayout.HORIZONTAL);
   holder = new ViewHolder();
   holder.image = new ImageView(this.context);
   holder.view = new TextView(this.context);
   layout.addView(holder.image);
   layout.addView(holder.view);
   holder.image.setImageResource(R.drawable.icon);

   convertView = layout;
   convertView.setTag(holder);
  } else {
   holder = (ViewHolder) convertView.getTag();
  }
  holder.view.setText(this.list.get(position));
  return convertView;
 }

 private class ViewHolder {
  ImageView image;
  TextView view;
 }
}

あとはこのクラスをさっき使っていたArrayAdapterの代わりに使えば,
デフォルトで提供されているiconイメージを使って画像付きの項目を作ることができる.
結果はこんな感じ.
こんな風に作れば同じレイアウトで項目を作ったとしても画像による識別が可能になるから便利だよね.
ということで今回は少々お役立ち情報でした...

ラベル:

0 件のコメント:

コメントを投稿

登録 コメントの投稿 [Atom]

<< ホーム