Applicationが利用できるViewModelとは
第1回で紹介したように、Androidアプリでは、UIに必要なデータをViewModelが取り扱い、保持することになっています。これは、データベースを使用する場合でも同じです。ということは、ViewModelと前回紹介したRoomを連携させる必要が出てきます。その際、少し問題があります。そこの確認から始めましょう。
今回のサンプル
ViewModelとRoomを連携させるアプリとして、たとえば、図1のようなものを考えます。このアプリは、拙著『Androidアプリ開発の教科書』の第10章で紹介しているアプリと同じ画面であり、カクテルの簡単なメモが保存できるアプリとなっています。そして、各カクテルを区別するIDとカクテル名、メモ内容がデータベースで管理されているとします。
カクテルメモのViewModelの骨格
このアプリの画面に表示されているカクテルのリストデータを固定(静的)データとしたならば、この画面に必要なデータは、カクテル名とメモ内容、そして直接画面には表示されませんが、現在表示させているカクテルを区別するためのカクテルIDとなります。となると、このカクテルメモアプリのViewModelクラス(MainViewModel)の骨格は、Javaではリスト1、Kotlinではリスト2のようになります。
public class MainViewModel extends ViewModel { private int _cocktailId = -1; private String _cocktailName = ""; private String _cocktailNote = ""; //以下アクセサメソッド : }
class MainViewModel : ViewModel() { var cocktailId = -1 var cocktailName = "" var cocktailNote = "" }