Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

アクティビティ実装時の勘どころ
~速習! Androidアプリケーション開発(5)~

第5回 アクティビティの実装その1

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/01/27 14:00

 この連載では、Androidの開発の楽しさを感じてもらう事を目標に、難しい内容はひとまず置いておいて、アプリケーション開発ができるようになるま でを最短ルートで説明していきます。今回は、Androidにおけるアクティビティ実装時の勘どころを、作成しながら解説していきます。

目次

Androidアプリケーションにおけるアクティビティ実装

 この連載では、Androidの開発の楽しさを感じてもらう事を目標に、難しい内容はひとまず置いておいて、アプリケーション開発ができるようになるま でを最短ルートで説明していきます。

 前回までの作業でデータベースの準備ができたので、今回からは各アクティビティの本格的な実装に入ります。

対象読者

 本連載はJavaおよびEclipseの基本を理解している方を対象としています。

前回までの記事

作成中のサンプルアプリケーション

 本連載では、いろいろな技術要素に触れるために、次のような「名刺管理アプリケーション」を作っています。

サンプルアプリケーションの機能概要

  • 名刺情報を一覧表示
  • 名刺情報の登録、更新
  • 名刺の登録情報から地図を表示
  • 名刺の登録情報から電話やメールなどの外部アプリケーションを利用
画面遷移のイメージ
画面遷移のイメージ

一覧画面の処理作成

 まずはデータベースから取得した結果を一覧画面に表示する処理を実装します。前回からの主な変更箇所は、次のとおりです。

  • ArrayAdaptorで扱うクラスをStringからBizCardに変更
  • onResume()でデータを取得し、取得したデータをArrayAdaptorに設定
ListActivity.java
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スレッドで行ってしまうと、描画が行われずに固まったような状態に見えてしまいます。そのような場合は、非同期(バックグランド)で処理を行う事で描画やユーザーの入力は止めずに処理を実行できます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 横井 朗(ヨコイ アキラ)

    株式会社ビーブレイクシステムズにて業務システムのパッケージソフト(MA-EYES)の製品開発から導入までを手掛けるとともに、オープンソースソフトウェア(ExCella)の開発リーダも務める。 オープンソース関連について多くの執筆経験を持つ。 &nbsp; &nbsp;

バックナンバー

連載:速習! Androidアプリケーション開発

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5