Androidアプリケーションにおけるアクティビティ実装
この連載では、Androidの開発の楽しさを感じてもらう事を目標に、難しい内容はひとまず置いておいて、アプリケーション開発ができるようになるま でを最短ルートで説明していきます。
前回までの作業でデータベースの準備ができたので、今回からは各アクティビティの本格的な実装に入ります。
対象読者
本連載はJavaおよびEclipseの基本を理解している方を対象としています。
前回までの記事
- 第1回 Androidの概要と開発環境の構築
- 第2回 最低限これだけ知っていればOK! Androidアプリ開発の基礎知識
- 第3回 レイアウトの作成手順をマスターする!
- 第4回 Androidアプリでのデータベース基礎
作成中のサンプルアプリケーション
本連載では、いろいろな技術要素に触れるために、次のような「名刺管理アプリケーション」を作っています。
サンプルアプリケーションの機能概要
- 名刺情報を一覧表示
- 名刺情報の登録、更新
- 名刺の登録情報から地図を表示
- 名刺の登録情報から電話やメールなどの外部アプリケーションを利用
一覧画面の処理作成
まずはデータベースから取得した結果を一覧画面に表示する処理を実装します。前回からの主な変更箇所は、次のとおりです。
- ArrayAdaptorで扱うクラスをStringからBizCardに変更
- onResume()でデータを取得し、取得したデータをArrayAdaptorに設定
package sample.bizcard;
import java.util.List;
import sample.bizcard.db.BizCard;
import sample.bizcard.db.BizCardDao;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
/**
* 一覧表示アクティビティ
*/
public class ListActivity extends Activity {
// 一覧表示用ListView
private ListView listView = null;
private ArrayAdapter<BizCard> arrayAdapter = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 自動生成されたR.javaの定数を指定してXMLからレイアウトを生成
setContentView(R.layout.main);
// XMLで定義したandroid:idの値を指定してListViewを取得します。
listView = (ListView) findViewById(R.id.list);
// ListViewに表示する要素を保持するアダプタを生成します。
arrayAdapter = new ArrayAdapter<BizCard>(this,
android.R.layout.simple_list_item_1);
// アダプタを設定
listView.setAdapter(arrayAdapter);
}
/**
* アクティビティが前面に来るたびにデータを更新
*/
@Override
protected void onResume() {
super.onResume();
BizCardDao dao = new BizCardDao(ListActivity.this);
List<BizCard> result = dao.list();
// 表示データのクリア
arrayAdapter.clear();
// 表示データの設定
for (BizCard bizCard : result) {
arrayAdapter.add(bizCard);
}
}
}
この状態でも問題はないのですが、処理に時間のかかるデータベースアクセスやネットワークの処理をUIスレッドで行ってしまうと、描画が行われずに固まったような状態に見えてしまいます。そのような場合は、非同期(バックグランド)で処理を行う事で描画やユーザーの入力は止めずに処理を実行できます。

