LoginSignup
0
0

More than 1 year has passed since last update.

サンプルアプリを通じて理解する、ComposeView と ViewModel の連携

Posted at

以下の文言は、AI (ChatGPT4) による出力結果です。そのため内容が一部不正確である可能性があります。

はじめに

今回は、サンプルアプリ (https://github.com/dignicate/zero-2023-android) を題材に、ComposeView と ViewModel の連携について解説したいと思います。この記事では、以下の内容をざっくりと説明します。

  • サンプルアプリの内容
  • ComposeView に ViewModel を直接 DI している理由と利点
  • collectAsState を使ってデータの状態を UI に反映する方法
  • この記事は、Android の公式ドキュメントを参考にしています。

サンプルアプリの内容

サンプルアプリは、簡単な画面で構成されており、ユーザーが入力したデータをリストに追加して表示する機能が実装されています。Jetpack Compose を使用して UI を構築し、ViewModel を利用してデータの管理を行っています。

ComposeView に ViewModel を直接 DI している理由と利点

サンプルアプリでは、ComposeView に ViewModel を直接 DI (Dependency Injection) しています。これにより、Fragment を使わなくても ViewModel を画面に組み込むことができます。これからは、Fragment を使わずに画面構成を行うことが一般的になるでしょう。

Hilt を使っている場合は、hiltViewModel() を使って ViewModel を注入できます。Dagger2 を使っている場合は、独自の拡張を行うことで同様のことが可能ですが、今回は説明を割愛します。

collectAsState によってデータの状態を UI に反映

サンプルアプリでは、collectAsState を使って ViewModel から取得したデータの状態を UI に反映しています。collectAsState は、Flow を State に変換し、データが変更されるたびに自動的に UI を再描画する機能を提供しています。

以下は、サンプルアプリからの簡単なコード例です。

val items: List<Item> by viewModel.items.collectAsState(initial = emptyList())

このように、collectAsState を使うことで簡単にデータの状態を UI に反映させることができます。

まとめ

今回は、サンプルアプリを題材にして、ComposeView と ViewModel の連携について解説しました。以下のポイントを押さえておくと、より効果的に Jetpack Compose を利用できます。

サンプルアプリの内容を理解することで、アプリ構築の基本的な流れを把握できます。
ComposeView に ViewModel を直接 DI することで、Fragment を使わずに画面構成が可能になります。
collectAsState を使って、データの状態を効率的に UI に反映させることができます。
今後、Jetpack Compose の普及が進むことで、Android アプリ開発のフロントエンド部分がよりシンプルになり、開発者にとっても扱いやすくなることが期待されます。今回の記事が、ComposeView と ViewModel を活用した開発に役立てば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0