TRY ANDROID DEV

Android アプリ開発のコーディングネタ。あとエンジニアとしての活動

2019-01-01から1年間の記事一覧

GW:全力でTODOアプリを作ってみる(3日目)

背景 GWなのでアウトプットに専念してみる 一旦基本のTODOアプリを作ったらどんな風になるのか試してみる 子供が寝た隙に毎日1時間程度の稼働でどこまでいけるか 子供が高熱を出して早速3日ストップした。。。 Repositoryを用意する 直接Daoを操作するのは…

GW:全力でTODOアプリを作ってみる(2日目)

背景 GWなのでアウトプットに専念してみる 一旦基本のTODOアプリを作ったらどんな風になるのか試してみる 子供が寝た隙に毎日1時間程度の稼働でどこまでいけるか 子供が高熱を出して早速3日ストップした。。。 Navigationを用意する まずはres/navigation …

GW:全力でTODOアプリを作ってみる(1日目)

背景 GWなのでアウトプットに専念してみる 一旦基本のTODOアプリを作ったらどんな風になるのか試してみる 子供が寝た隙に毎日1時間程度の稼働でどこまでいけるか Roomを使ってDB作成 @Dao interface TodoDao { @Query("SELECT * from todo") fun getAllWords…

Android Architecture Components: Room の再復習

背景 急遽RoomとPagingの再復習をする必要に駆られたので頑張る まずはRoomから Room RoomはQLiteをラップして利用できるコンポーネント。 以下のCodeLabsを行う。 codelabs.developers.google.com Gradleの設定 以下の設定をbuild.gradleに記載する // Room…

Type parameter bound for T in XXX is not satisfied が発生した場合の対処方法

背景 新規プロジェクトでViewModelの動きを試そうとしたら「Type parameter bound for T in XXX is not satisfied」が発生した ソースコード MainActivity.kt import android.os.Bundle import androidx.fragment.app.FragmentActivity import androidx.life…

'lateinit' modifier is not allowed on properties of primitive type はなぜ起こるのか。

背景 なんとなくnullableにしたくなくて次のように記載したら'lateinit' modifier is not allowed on properties of primitive type と警告された。 /** * Constructs an [ClientException] with no detail message. */ constructor() : super() /** * Const…

Firebaseでチャットアプリを作る(Cloud Firestore)

背景 なんとなくFirebase使ったことないのまずいかなぁと思ってFirebaseに手を出してみる。 今まではPush通知くらいしか使ってなかった。 今回はCloud Firestoreを利用してチャットアプリを作ってみる Cloud Firestore NoSQLドキュメント指向データベースら…

DroidKaigi 2019 official appを読んでみる④:Kotlin-coroutines-channel

背景 DroidKaigi 2019 のofficial appが公開されている:参照 せっかくだしコントリビュートしたいなと思ったけど思った以上に皆新しい技術使っててよくわからない。。 とりあえず一つずつ理解することにする。 Storeを読む ついにMainActivityから脱出してSt…

DroidKaigi 2019 official appを読んでみる③:Dagger2 Android Support

背景 DroidKaigi 2019 のofficial appが公開されている:参照 せっかくだしコントリビュートしたいなと思ったけど思った以上に皆新しい技術使っててよくわからない。。 とりあえず一つずつ理解することにする。 コンテンツの実装を見ようとした。 Navigation…

DroidKaigi 2019 official appを読んでみる②:Navigation

背景 DroidKaigi 2019 のofficial appが公開されている:参照 せっかくだしコントリビュートしたいなと思ったけど思った以上に皆新しい技術使っててよくわからない。。 とりあえず一つずつ理解することにする。 アプリ起動から順に追っていく DroidKaigi 2019…

DroidKaigi 2019 official appを読んでみる①:Gradle Kotlin DSL

背景 DroidKaigi 2019 のofficial appが公開されている:参照 せっかくだしコントリビュートしたいなと思ったけど思った以上に皆新しい技術使っててよくわからない。。 とりあえず一つずつ理解することにする。 DroidKaigi 2019 official app のbuild.gradle …

Kotlinでprivate constructorを利用する(companion object)

背景 static public な文字列を定義したくなった。(途中で思い返して異なる方法をとったけれど。) 内容 以下のような形でdomainに文字列を設定していたが、利用可能なドメインは限られているため、いくつかの固定文字列から選択させる形を取ろうとした。 f…

RecyclerViewのAdapterについて再度復習する

背景 毎回RecyclerViewを利用する時に「どうやって作るんだっけ」と悩む 根本的に理解し直す必要があるので再度復習する。 構成 登場人物は以下の4つ。 Adapter RecyclerViewに表示するViewを生成・管理・紐付ける役割を持つ。 表示するViewを生成するため…

Dagger2でDIする際、インスタンス生成時にパラメータを設定したい

背景 以下のクラスを考える。 ここではパラメータが二つあるが、それぞれ意味合いが異なる。 domain : インスタンスの特徴を示す情報。アイデンティティ。 repository : 依存性注入のため生成時に指定している。動作環境によって変更される。 このクラスのイ…

Interfaceの実体クラスにまたInterfaceがある場合のDI(Dagger2)

背景 以下の構成を考える。 ドメイン層は他の層と依存関係を持たないが、ドメインのメソッドで通信を行いたい。 そのためにinterfaceを設定してリポジトリ層と疎結合にする。 ただしリポジトリ層でも通信をする場合とテスト用にローカルファイルを返却する場…