Android application development 第15章:リストのクリック処理と画面遷移

  • リストのアイテムをクリックしたら
  • 別の画面(Activity)に遷移
  • クリックしたデータを次の画面に渡す

という一連の処理を学びます。


🧩 まずは全体像

  1. RecyclerViewListView を画面に表示
  2. 各行にクリックリスナーを設定
  3. クリック時に Intent で別の Activity を起動
  4. Intent.putExtra() でデータを渡す
  5. 遷移先の ActivitygetIntent().getStringExtra(...) などで受け取る

🔧 RecyclerViewにクリックリスナーを付ける

Adapter 内でクリック処理を定義するのが一般的です。

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> dataList;
    private Context context;

    public MyAdapter(Context context, List<String> list) {
        this.context = context;
        this.dataList = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                     .inflate(android.R.layout.simple_list_item_1, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        String item = dataList.get(position);
        holder.textView.setText(item);

        // ✅ クリック処理の追加
        holder.itemView.setOnClickListener(v -> {
            Intent intent = new Intent(context, DetailActivity.class);
            intent.putExtra("item_name", item);
            context.startActivity(intent);
        });
    }

    @Override
    public int getItemCount() {
        return dataList.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView textView;
        public ViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(android.R.id.text1);
        }
    }
}

📱 遷移先の DetailActivity のコード例

public class DetailActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        TextView detailText = findViewById(R.id.detailText);

        // ✅ Intentからデータを取得
        String itemName = getIntent().getStringExtra("item_name");

        detailText.setText("選択されたアイテム: " + itemName);
    }
}

🧾 AndroidManifest.xml に遷移先を登録するのも忘れずに!

<activity android:name=".DetailActivity" />

💡 注意点:Contextについて

RecyclerViewの内部は Activity ではないので、
startActivity() するには Context が必要です。
AdapterContext を渡す or itemView.getContext() を使うことで解決できます。


✅ まとめ

要素説明
setOnClickListener()各アイテムにクリック処理を設定
Intent画面遷移の手段
putExtra() / getStringExtra()データの受け渡し
ContextstartActivity() には必須。Adapter内で気をつけるポイント

🧪 応用(知っておくと良い)

  • 複数の値を渡したい → putExtra() を複数回 or Bundle にまとめる
  • オブジェクトを渡したい → Serializable or Parcelable を使う

mh

Related Posts

Android application development 第14章:Adapterパターンの復習とAndroidでの実装

🧩 Adapterパターンの復習(Java編) ■ Adap…

Android application development 第13章:Configuration Change(構成の変更)とは

Androidでは、アプリの動作中に**「画面の状態やデバイ…

You Missed

Kubernetes Learning 第11章:YAML形式の基本 ~Kubernetesマニフェストの土台を理解する~

  • 投稿者 mh
  • 5月 15, 2025
  • 11 views

Android application development 第15章:リストのクリック処理と画面遷移

  • 投稿者 mh
  • 5月 15, 2025
  • 9 views

Kubernetes Learning 第10章:Namespace / Label / Annotation ~リソースを整理し、意味づける~

  • 投稿者 mh
  • 5月 14, 2025
  • 18 views

Android application development 第14章:Adapterパターンの復習とAndroidでの実装

  • 投稿者 mh
  • 5月 14, 2025
  • 21 views

Kubernetes Learning 第9章:ConfigMap / Secret ~アプリの設定と機密情報の管理~

  • 投稿者 mh
  • 5月 13, 2025
  • 24 views

Android application development 第13章:Configuration Change(構成の変更)とは

  • 投稿者 mh
  • 5月 13, 2025
  • 17 views