Androidアプリのメニュー ~ オプションメニューとコンテキストメニュー
Android Studio 2で始めるアプリ開発入門 第8回
ダウンロード サンプルファイル (102.1 KB)
Androidアプリを開発するにはAndroid Studioを使います。そのAndroid Studioのメジャーアップデートであるバージョン2.0が正式公開されました。本連載では、最新のAndroid Studio 2系を使い、Androidアプリ開発の基本を解説していきます。前回の解説で、Androidの画面遷移を扱いました。今回は、オプションメニューとコンテキストメニューを解説していきます。
本連載の書籍化について(2018年5月追記)
本連載は、加筆・再構成およびAndroid Studio 3対応を行い、書籍化しています。最新情報については、こちらもぜひ併せてご参照ください。
対象読者
- 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のものをそのままコピーしてきてください。
その上で、以下のソースコードを記述します。
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());
}
~省略~
}
入力できた段階で、一度アプリを起動してみてください。前回と同じく、以下の画面が表示されるはずです。
リストをタップしたら、前回同様、注文完了画面が表示されるはずです。
IntentSampleからの改造点
リスト画面の見た目は同じですが、今回はソースコードを少し改造しています。
まず、今回使用するListViewオブジェクトをクラスのフィールドとして宣言し、中身をonCreate()内で取得しています。それが、リスト1の(1)と(5)です。
同様に、リストデータそのものもフィールドとして宣言し、先に作成したリストデータ作成privateメソッド(createTeishokuList()メソッド)をonCreate()メソッド内で実行して中身を作成しています。それが、リスト1の(2)と(6)です。
また、SimpleAdapterのnew時の第4引数fromと第5引数toのデータも定数フィールド化しています。それがリスト1の(3)と(4)です。
この記事は参考になりましたか?
- Android Studio 2で始めるアプリ開発入門連載記事一覧
- この記事の著者
-
WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
