Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Androidアプリの画面遷移 ~ アクティビティの起動をつかさどるIntentクラス

Android Studio 2で始めるアプリ開発入門 第7回

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

 Androidアプリを開発するにはAndroid Studioを使います。そのAndroid Studioのメジャーアップデートであるバージョン2.0が正式公開されました。本連載では、最新のAndroid Studio 2系を使い、Androidアプリ開発の基本を解説していきます。前回までの解説では、アプリはすべて1画面でした。今回は、前回解説したListViewにさらに1画面追加し、2画面のアプリを作りつつ、画面遷移を解説していきます。

目次

対象読者

  • Androidアプリ開発未経験な方
  • Java言語は一通り習得済みである方

サンプルプロジェクト作成

 では、今回使用するサンプルアプリを作成していきましょう。

プロジェクト情報

 以下が今回使用するサンプルアプリのプロジェクト情報です。

  • Application name: IntentSample
  • Company Domain: android.wings.websarva.com
  • Package name: com.websarva.wings.android.intentsample
  • Project location: C:\…任意のワークフォルダ…\IntentSample
  • Phone and Tablet Minimum SDK: API 15
  • Add an activity: Empty Activity
  • Activity Name: MenuListActivity
  • Layout Name: activity_menu_list

画面作成

 今回のサンプルは、前回作成した定食メニューリストを以下のように2行表示にし、価格も表示したものを作ります。

図1 今回のサンプルの画面
図1 今回のサンプルの画面

 まず、strings.xmlファイル、および、activity_menu_list.xmlファイルに関しては、ダウンロードサンプルを参照してください。

 今回は、前回の後半で行ったようにアダプタクラスを使用してアクティビティの中でリストデータを生成します。MenuListActivityののonCreate()メソッドに以下のソースコードを記述します。

リスト1 MenuListActivityにスースコードを追加
public class MenuListActivity extends AppCompatActivity {

      ~省略~

    ListView lvMenu = (ListView) findViewById(R.id.lvMenu);

    List<Map<String, String>> menuList = new ArrayList<Map<String, String>>();  // (1)

    Map<String, String> menu = new HashMap<String, String>();  // (2)
    menu.put("name", "から揚げ定食");  // (2)
    menu.put("price", "800円");  // (2)
    menuList.add(menu);  // (2)

      ~繰り返し~

    String[] from = {"name", "price"};  // (3)
    int[] to = {android.R.id.text1, android.R.id.text2};  // (4)
    SimpleAdapter adapter = new SimpleAdapter(MenuListActivity.this, menuList, android.R.layout.simple_list_item_2, from, to);  // (5)
    lvMenu.setAdapter(adapter);  // (6)
  }
}

 「~繰り返し~」の部分はmenuListにデータを登録している部分です。(2)の4行の繰り返しになりますので、続きはダウンロードサンプルを参照してください。

 入力できた段階で、一度アプリを起動してみてください。図1のような画面が表示されるはずです。

SimpleAdapter

 前回は、アダプタクラスとしてArrayAdapterを使いました。今回は、SimpleAdapterを使います。SimpleAdapterはデータ構造としてList<Map<String, ?>>を使います。今回は「?」にStringを使い、このListオブジェクトを用意します。これが(1)です。(2)はそのデータ登録です。

 データが用意できた段階で、これを使って、SimpleAdapterを生成します。これが(5)です((3)と(4)は後述します)。SimpleAdapterはnewする際、引数が5個必要です。

 引数1はコンテキストです。前回解説した通り、「アクティビティクラス名.this」を記述します。

 引数2はリストデータそのものです。

 引数3はリストビューの各行のレイアウトを表すR値です。今回は2行表示のリストとしますので、ここをAndroid SDKでもともと用意されている

android.R.layout.simple_list_item_2

とします。

 引数4と引数5は次項で扱います。

 生成したアダプタオブジェクトを、ListViewのsetAdapter()メソッドでセットします。これが(6)です。

from-to

 SimpleAdapterをnewするときの第4引数のfromと第5引数のtoの組合せで、Map内のどのデータをListView各行のどの部品に割り当てるかを指定できるようになっています。

 今回使用している「android.R.layout.simple_list_item_2」レイアウトのListViewというのは、下図のように各行に2個のTextViewが埋め込まれており、それぞれのidが「android.R.id.text1」と「android.R.id.text2」となっています。

図2 android.R.layout.simple_list_item_2のレイアウト
図2 android.R.layout.simple_list_item_2のレイアウト

 この「android.R.id.text1」にMapのキーが「name」のデータを、「android.R.id.text2」に「price」のデータを表示するように指定するのが、fromとtoの組合せなのです。

図3 fromとtoの対応関係
図3 fromとtoの対応関係

 上図のように、String配列fromにMapのキー名を記述します(ソースコードの(3))。それと同じ順番で対応するようにint配列toにidのR値を記述します(ソースコードの(4))。このようにして用意したfromとtoをそれぞれSimpleAdapterをnewするときの第4引数と第5引数として渡すことで、それぞれのデータを埋め込んでListViewを表示してくれます。


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

著者プロフィール

  • WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2012年2月時点での登録メンバは37名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:Android Studio 2で始めるアプリ開発入門

もっと読む

おすすめ記事

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