Androidアプリ開発

RecyclerViewのItemに
ポップアップメニューを実装する

この記事は約9分で読めます。
スポンサーリンク

こんにちは、まっさん(@Tera_Msaki)です。

この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaでの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これからAndroidのアプリ開発やJavaでの開発を始めたい方への案内は、記事の最後で紹介します)

これはイイ、、、
USBで接続できて、1TBで転送速度600MB/秒、
もう大容量の内蔵ディスクは不要ですね♪

◎テーマ
Androidスマホのアプリ開発 RecyclerView(ListView)の Item にポップアップメニューを実装する

◎ポイント

Androidスマホのアプリ開発でユーザに処理を選択させる仕組みとして、
ポップアップメニューは有効な手段のひとつです。
一覧表示された項目の選択とその項目に対して、
処理を選択させる仕組みを、PopupMenu を使用して実装します。

動画はこちらです。

◎メニュー定義ファイルをリソースに登録する

リソース(res)にメニュー(xmlファイル)を格納するためのフォルダ(menu)を作成します。
作成したフォルダにメニューを定義したxmlファイルを格納します。

◎メニュー定義ファイル

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu1" android:title="@string/menu1" />
    <item android:id="@+id/menu2" android:title="@string/menu2"/>
    <item android:id="@+id/menu3" android:title="@string/menu3"/>
    <item android:id="@+id/menu4" android:title="@string/menu4"/>
</menu>

メニューの名称などは strings.xmlに記述します。

<resources>
    :
    <string name="menu1">コース名変更</string>
    <string name="menu2">イメージ表示</string>
    <string name="menu3">イメージ選択</string>
    <string name="menu4">カメラ撮影</string>
    :
</resources>

◎ポップアップメニューの表示と選択時の処理を実装する

一覧表示された項目の選択は、
RecyclerView(ListView)のsetOnItemClickListenerに記述します。
setOnItemClickListener で view と position(選択位置)が取得できるので、
view をセットして、PopupMenu をインスタンス化します。
処理の選択は、インスタンス化とあわせて、
setOnMenuItemClickListenerに記述します。

:
import androidx.appcompat.widget.PopupMenu;
:
public class MainActivity extends AppCompatActivity {
    :
    public void updateCourseList(List<AccessFile> newAccessFile){
        courseList = (ArrayList<AccessFile>) newAccessFile;
        courseAdapter = new HorizontalListView.ArrayAdapter(courseList) {
        courseView.setAdapter(courseAdapter);
        courseView.setOnItemClickListener((view, position) -> {
                PopupMenu popup = new PopupMenu(this, view);
                popup.setOnMenuItemClickListener(item -> {
                    courseListPosition = position;
                    itemId = item.getItemId();
                    Intent intent;
                    switch (itemId) {
                        case R.id.menu1:
                            // コース修正
                            course = courseList.get(position);
                            :
                            break;
                        case R.id.menu2:
                            // ビュワー表示
                            course = courseList.get(position);
                            :
                            break;
                        case R.id.menu3:
                            // イメージ表示
                            course = courseList.get(position);
                            :
                            break;
                        case R.id.menu4:
                            // カメラ表示
                            course = courseList.get(position);
                            :
                            break;
                        default:
                    }
                    return false;
                });
                popup.inflate(R.menu.menu_course);
                popup.show();
            }
        });

HorizontalListViewは、横方向に一覧表示するようにカスタムした RecyclerView です。

ブログランキング・にほんブログ村へ

◎これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

初めてのAndroidのアプリ開発では、アプリケーション開発経験がない方や、
アプリケーション開発経験がある方でも、JavaやC#などのオブジェクト指向言語が初めての方は、
書籍などによる独学ではアプリ開発できるようになるには、
かなりの時間がかかりますので、オンラインスクールでの習得をおススメします。

コメント欄

タイトルとURLをコピーしました