Androidアプリ開発 -リストをタッチして別ページ表示-
前提
- 「設定画面」で各種項目を設定。
- Activity:ConfigActivity
- UI:layout/config.xml
- 「設定一覧画面」で登録した各種項目を表示。
- Activity:ListActivity
- UI:layout/list.xml
やりたいこと
「設定一欄画面」で表示された一覧で、ある設定をタッチしたらその設定の編集画面に移動させたい。
※今回は、ListActivityからConfigActivityに移動。
やったこと
ListActivity側(設定一覧画面)
SimpleAdapterクラスを使ってレイアウトをカスタマイズ。
ここで、移動先のConfigActivityをセットし、putExtraでタッチした設定のIDをセットしています。
//略 ListView lv = new ListView(this); setContentView(lv); Map<String, Object> map = new HashMap<String, Object>(); //実際は以下の箇所はDBから設定一欄を取得しています。 map.put("title", "設定"); Intent intent = new Intent(); intent.setClass(this, ConfigActivity.class); intent.putExtra("id", 1); map.put("intent", intent); myData.add((HashMap<String, Object>) map); SimpleAdapter adapter = new SimpleAdapter(this, myData, R.layout.list, new String[] { "title"}, new int[] { R.id.title }); lv.setAdapter(adapter); //リストビューのアイテムがクリックされた時に呼び出されるコールバックリスナー lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView listView = (ListView) parent; Map<String, Object> map = (Map<String, Object>) listView.getItemAtPosition(position); Intent intent = (Intent) map.get("intent"); startActivity(intent); } }); //略
上記をonCreate内でおこなっています。
ConfigActivity側(設定画面)
getIntExtraで設定IDを受け取って、そのIDを元に設定情報をDBから受け取ります。
そして、設定項目に値を入れます。
//略 Intent intent = getIntent(); if(intent != null){ Integer id = intent.getIntExtra("id", 1); //このメソッドでDBからidをキーにして設定情報を受け取って、各項目を入れます。 this.setData(id); } //略
ちなみにsetData(id)は以下のような感じです。
private void setData(Integer id) SQLiteDatabase sdb = helper.getReadableDatabase(); HashMap<String, String> list = helper.get(id); //ここで設定情報を取得 title.setText(list.get("title")); subject.setText(list.get("subject")); body.setText(list.get("body")); }
参考サイト
広告
関連記事
-
第二回Androidテスト祭り参加記録 -祭りに参加してきたよ-
久しぶりに勉強会に参加してきました。 参加してきたのは「第二回Androidテスト祭り(4/28)
-
iPhoneアプリ開発 -mixiSDKを使ってmixi連携をしてみる(2)-
* 前回 は、「ユーザーにAPI利用のための認可」をおこなってもらうところまでやりました。 本エン
-
iPhoneアプリ開発 -UIButtonのTouch Down、Touch up Inside、Touch up Outsideの使い方-
* Touch DownとTouch up Inside、Touch up Outsideの違い
-
Twitterでサービスにログイン -PHP(CakePHP1.3)で実践編-
以前、ソーシャルログインについて書きました。 ただ、Twitter連携にまだ触れてない人にはちょ
-
Facebookがちょっとコワイ vol.1 -自分の情報をコントロールできない-
Facebookの最近の広がり方などを見ていて、少々不安を感じたので思ったことをつらつらと書いてみま
-
CakePHP1.3でテストコード(3) -ENUM型が使えない-
cakePHP1.3でのSimpleTestを使ったテストケースの第3回目。 今回は、テーブル構成で
-
ViewController単位で画面の向きを変えてみる
ViewController毎に画面の向きを変えたい!ということがあったのでやってみました。 *
-
カレログ騒動で考えたライフログのこと
今回、カレログというAndroidアプリが話題になり騒動になってます。 というわけで、ふとカレログ
-
order byでハマったこと -order by、group byの処理順序-
CakePHPでorder byとgroup byを使っていてはまったことについてのメモ。 *
-
jQuery Mobile導入手順 -はじめの一歩-
jQuery Mobileの1.0がリリースされ、利用したい方が増えていると思います。 最初に何を
Comment
ListViewのクリック
前回までにリストビューの基本的な表示を行いました ListActivityを利用したリスト表示 今回は表示したリストビューをタッチした時のイベントを検出したいと思います リストビューの選択…