活動
2020/09/19から2020/10/18まで
2020/10/14
- 高徹 11:01 機能 #165: Androidアプリケーション(検温記録)を古典MVC構造で作成する
- 調査メモ
AdapterのswapCursorメソッドに、
notifyItemRangeInsertedを呼ぶコードを入れる? 次URLのコメント参照
https://gist.github.com/skyfishjy/443b7448f59be978bc59
2020/10/13
- 高徹 08:21 機能 #165 (フィードバック): Androidアプリケーション(検温記録)を古典MVC構造で作成する
- しばらく使用していると、検温履歴の表示で次の事象が発生するようになった。
* 順番がID逆順ではなく順不同で表示されることがある
* 同じ日時の検温が履歴上複数表示されることがある
状況から、onResumeが走るときに生じているように推測
RecyclerViewの使い方を事例調査すると、onResumeでは次の処理を記述する模様
* Adapterに変更通知(notifyDataSetChanged)
* RecyclerViewの表示を空にする ⇒ Cur...
2020/10/04
- 高徹 08:04 機能 #167: Androidアプリケーション(検温記録)をJetPackを用いたMVVM構造で作成する(Kotlin編)
- h4. ドメインオブジェクト v.s. エンティティクラス
View側(ViewModelおよびView)で扱うデータは、Roomへの依存性を持たないドメインオブジェクト(POJO)とするか、Roomのエンティティをそのまま流すか、のトレードオフが発生。
* リポジトリは永続化手段(SQLite、Realm、あるいはリモートに通信を介して)を抽象化するので、永続化手段の具象型(Entity)を扱うのは不適切では?
* ドメインモデルはRoomライブラリに依...
2020/10/03
- 高徹 20:06 機能 #167: Androidアプリケーション(検温記録)をJetPackを用いたMVVM構造で作成する(Kotlin編)
- h4. リポジトリとデータベース
JetPackでは、SQLiteデータベースのアクセスをRoomライブラリ(ORM)で行う。
h5. Roomで検温テーブル
Entity、Dao、Database の責務を持つクラスをそれぞれ用意する。
まずはEntityを担うクラス。これはSQLiteテーブルのスキーマとのマッピングを表現し、このクラスのインスタンスは1行のレコードを保持する。値を表す型なので、data class としている。
* Entityクラス T...
2020/09/30
- 高徹 08:01 機能 #167: Androidアプリケーション(検温記録)をJetPackを用いたMVVM構造で作成する(Kotlin編)
- h4. ViewModelの作成(1)
日時を保持し、日時を通知する機能を実装する。
通知機能はモデルとビューを分離する設計では必須であり、その手段としてJetPackではDataBindingとLiveDataの2つの仕組みが提供されている。ViewModelはLiveDataと組み合わせるのが定番なようで、そちらで実装する。
2020/09/27
- 高徹 23:05 機能 #167: Androidアプリケーション(検温記録)をJetPackを用いたMVVM構造で作成する(Kotlin編)
- View周りのコード実装を行う
* TextView(日時表示)で現在日時を表示する
* NumberPickerの上限、下限値を設定する
* RecyclerView で空の時の表示(余力があればする、なくても可)
JetPack時代では、findViewByIdは使わず、DataBindingもしくはViewBindingを使ってXMLでレイアウトした部品とコードを紐づける。
[#166]では、Kotlin固有の仕組みで実現していたが、Javaでも... - 高徹 21:47 機能 #167 (進行中): Androidアプリケーション(検温記録)をJetPackを用いたMVVM構造で作成する(Kotlin編)
- h4 新規プロジェクトを作成
* Android Studioで新規プロジェクト作成、名前は TempRecorderJetpackKt とし、言語はKotlin
* リポジトリに、ブランチ features/167 を作成し、初期生成物をコミット
commit:e44af410
* デバイス(Pixel 3)で実行 → OK
* Gradleのバージョンをデフォルトの6.1.1から6.6.1(最新安定版)に変更
[File]メニュー > [Projec... - 高徹 15:21 機能 #167 (解決): Androidアプリケーション(検温記録)をJetPackを用いたMVVM構造で作成する(Kotlin編)
- [#165]の仕様で、但しアプリケーション構造をMVVM構造とし、ライブラリはJetPackで提供されるものからMVVM構造に必要なものを選択して使用する。
Kotlin言語で実装する。
h4. 結果
* リポジトリ
source:learn/android/TempRecorderJetpackKt
* Wikiページ
[[Androidプログラミング-RecyclerView]]
[[Androidプログラミング-Room]]
[[Andro... - 高徹 15:17 調査 #163 (解決): Windows 10 2004のWSL2にCentOS8を入れる
- インストールして起動し、ユーザー環境が使用できたので解決とする。
- 高徹 15:15 機能 #166 (解決): Androidアプリケーション(検温記録)を古典MVC構造で作成する(Kotlin編)
- データベースはinsertとqueryのみ実装し、update、deleteは未実装だが目的は達しているので本チケットは解決とする。
- 高徹 15:15 機能 #165 (解決): Androidアプリケーション(検温記録)を古典MVC構造で作成する
- データベースはinsertとqueryのみ実装し、update、deleteは未実装だが目的は達しているので本チケットは解決とする。
2020/09/21
- 高徹 11:48 機能 #166: Androidアプリケーション(検温記録)を古典MVC構造で作成する(Kotlin編)
- アプリを実行するとすぐに落ちてしまう。
- 高徹 11:19 機能 #166: Androidアプリケーション(検温記録)を古典MVC構造で作成する(Kotlin編)
- MainActivity.kt にコンテントプロバイダアクセスを追記
- 高徹 09:22 機能 #166: Androidアプリケーション(検温記録)を古典MVC構造で作成する(Kotlin編)
- h4. コンテントプロバイダの作成(続)
h5. ContentProviderのサブクラス作成
コンテントプロバイダとして次の2種類のリクエストに対応する。
# すべての検温記録を取得
# 指定したIDの検温記録1件を取得
利用者は、次のコンテントURIでリクエストを指定する。
# "content://com.torutk.temprecorder.kt.provider/temperatures"
# "content://com...
2020/09/20
- 高徹 10:51 機能 #166: Androidアプリケーション(検温記録)を古典MVC構造で作成する(Kotlin編)
- h4. コンテントプロバイダの作成
* コンテントプロバイダの利用者とのインタフェースを決める
* コントラクトクラスの作成
* SQLiteOpenHelperのサブクラス作成
* ContentProviderのサブクラス作成
h5. 利用者とのインタフェースを決める
コンテントプロバイダの利用者は、次を指定する必要があるので、それらを決める。
* コンテントのURI
* データの構造(メタデータ)
Cursorから値を取り出すため...
2020/09/19
- 高徹 08:29 機能 #166: Androidアプリケーション(検温記録)を古典MVC構造で作成する(Kotlin編)
- RecyclerViewの実装については、次のWikiページに記載
[[Androidプログラミング-RecyclerView]]