Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Androidアプリのメニュー ~ オプションメニューとコンテキストメニュー

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

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

 Androidアプリを開発するにはAndroid Studioを使います。そのAndroid Studioのメジャーアップデートであるバージョン2.0が正式公開されました。本連載では、最新のAndroid Studio 2系を使い、Androidアプリ開発の基本を解説していきます。前回の解説で、Androidの画面遷移を扱いました。今回は、オプションメニューとコンテキストメニューを解説していきます。

目次

対象読者

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

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

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

プロジェクト情報

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

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

サンプルの基本部分作成

 今回のサンプルは、前回作成したメニューの注文アプリ(IntentSample)をベースに以下の機能を追加していきます。

  • アクションバーにメニューを追加し、メニューを選択すると定食リストとカレーリストが切り替わる
  • リストを長押しするとメニューが表示され、選択された定食やカレーの説明表示や注文ができる

 まずはそのベース部分を作成しましょう。それぞれ以下のようにしてください

  • strings.xml:ダウンロードサンプルをコピー
  • activity_menu_list.xml:前回のIntentSampleと内容が同じなのでコピー
  • MenuThanksActivity/activity_menu_thanks.xml:前回同様に追加(ソースコードも前回と同様ですので、IntentSampleの内容をコピー)

 さて、ここからは、MenuListActivityにソースコードを記述していきます。

 まず、IntentSampleではonCreate()メソッド内でメニューリストデータのListオブジェクトを作成しましたが、今回はそれをprivateメソッド化しています。ダウンロードサンプルのMenuListActivityを参照しながら、createTeishokuList()メソッド、および、createCurryList()メソッドを記述してください。

 また、privateなメンバクラスであるListItemClickListenerもIntentSampleのMenuListActivityのものをそのままコピーしてきてください。

 その上で、以下のソースコードを記述します。

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

    private ListView _lvMenu;  //(1)
    private List<Map<String, String>> _menuList;  //(2)
    private static final String[] FROM = {"name", "price"};  //(3)
    private static final int[] TO = {android.R.id.text1, android.R.id.text2};  //(4)

    @Override
    protected void onCreate(Bundle savedInstanceState) {

      ~省略~

        _lvMenu = (ListView) findViewById(R.id.lvMenu);  //(5)

        _menuList = createTeishokuList();  //(6)
        SimpleAdapter adapter = new SimpleAdapter(MenuListActivity.this, _menuList, android.R.layout.simple_list_item_2, FROM, TO);
        _lvMenu.setAdapter(adapter);

        _lvMenu.setOnItemClickListener(new ListItemClickListener());
    }

      ~省略~

}

 入力できた段階で、一度アプリを起動してみてください。前回と同じく、以下の画面が表示されるはずです。

図1 起動した画面
図1 起動した画面

 リストをタップしたら、前回同様、注文完了画面が表示されるはずです。

IntentSampleからの改造点

 リスト画面の見た目は同じですが、今回はソースコードを少し改造しています。

 まず、今回使用するListViewオブジェクトをクラスのフィールドとして宣言し、中身をonCreate()内で取得しています。それが、リスト1の(1)と(5)です。

 同様に、リストデータそのものもフィールドとして宣言し、先に作成したリストデータ作成privateメソッド(createTeishokuList()メソッド)をonCreate()メソッド内で実行して中身を作成しています。それが、リスト1の(2)と(6)です。

 また、SimpleAdapterのnew時の第4引数fromと第5引数toのデータも定数フィールド化しています。それがリスト1の(3)と(4)です。


  • 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