アクティビティとデータベース操作クラスというそれぞれの部品が完成したので、これらをくっつけていきます。
まず一覧画面。
現在「新規追加」しか表示されず、しかもクリックしても動きませんが、これを動作するようにしてみます。
/src/com.example.bizcard/ListActivity.java
public class ListActivity extends Activity {
//インスタンス変数
private ListView listView;
ArrayAdapter arrayAdapter = null;
//起動時に実行
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 配列を作成
arrayAdapter = new ArrayAdapter<bizcard>(this, android.R.layout.simple_list_item_1);
// main.xmlのListViewを取得
listView = (ListView) findViewById(R.id.list);
// 配列を突っ込む
listView.setAdapter(arrayAdapter);
}
//アクティビティが前面に来たときに実行
public void onResume() {
super.onResume();
//DBアクセスクラス
BizCardDao dao = new BizCardDao(ListActivity.this);
//DBの中身を取得
List<bizcard> result = dao.list();
//現在の値をクリア
arrayAdapter.clear();
//全データをarrayAdapterに突っ込む
for (BizCard bizCard : result) {
arrayAdapter.add(bizCard);
}
}
}
あれ?
新規登録とか書いてあったんで単なる動作選択メニューだと思ってたんだが名刺一覧だったのか。
arrayAdapter.add(bizCard)にはStringではなくBizCardを突っ込んでいるので、表示は前作ったBizCard.toString()が使用されることになります。
以上でデータベースに登録してある値を拾ってきて表示するようになりました。
初回起動時にはDatabaseOpenHelper.onCreate()が作動してデフォルトの4件のデータを登録してくれます。
めでたしめでたし。
エミュレータで動作中のデータベースの状態をEclipseから見ることはできないの?
外部閲覧方法なら前飛ばしたところに書いてあります。
コマンドプロンプトから
> adb shell
# cd /data/data/com.example.bizcard/databases/
# sqlite3 BIZ_CARD
> select * from biz_card;
で閲覧できますが、見事に文字化けしています。
AndroidはUTF-8ですが、コマンドプロンプトはSJISなうえに文字コード変更が面倒なんですよね。
右クリックから「プロパティ」→「フォント」→「MSゴシック」を選択、コマンドプロンプトから"chcp 65001"でUTF-8になり、↑も文字化け無く見ることができます。
ただコマンドプロンプトの使い勝手が悪いので常用したいとは思えません。
また、「ウィンドウ」→「ビューの表示」→「その他」→「Android」→「ファイル・エクスプローラー」→「data/data/com.example.bizcard/databases/BIZ_CARD」→右上の「Pull a file from the device」ボタンとすることでDBの状態をファイルとして出力することができます。
いやあちがうんだ、もっとこうDBツリービューを覗けばOK、みたいなかんじで現状を直接確認とかできないのか?
Androidの記事
PR
トラックバック
トラックバックURL: