TRY ANDROID DEV

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

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

背景

  • GWなのでアウトプットに専念してみる
  • 一旦基本のTODOアプリを作ったらどんな風になるのか試してみる
  • 子供が寝た隙に毎日1時間程度の稼働でどこまでいけるか

Roomを使ってDB作成

@Dao
interface TodoDao {

    @Query("SELECT * from todo")
    fun getAllWords(): List<TodoEntity>

    @Insert
    fun insert(todoEntity: TodoEntity)
}
@Entity(tableName = "todo")
data class TodoEntity(
    @PrimaryKey val taskNo: Int,
    val title: String,
    val detail: String,
    val expireTime: String?
)
@Database(entities = [TodoEntity::class], version = 1)
abstract class TodoDatabase : RoomDatabase() {
    abstract fun todoDao(): TodoDao

    companion object {
        @Volatile
        private var INSTANCE: TodoDatabase? = null

        fun getDatabase(context: Context): TodoDatabase {
            val tempInstance = INSTANCE
            if (tempInstance != null) {
                return tempInstance
            }
            synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    TodoDatabase::class.java,
                    "todo" // テーブル名
                ).build()
                INSTANCE = instance
                return instance
            }
        }
    }
}

一旦ここまでは最近もやったので比較的スムーズ。

buildsrcを用いたdependencies管理

Navigation導入しようと思ったけど先にdependenciesを整理しておく。 前やったしスムーズでしょ、と思ったらどハマりして1時間かかった。。。

buildSrcフォルダにすべきところをbuildsrcにしていた。

ひどいハマり方をしてしまった。。でも最初のパッケージ名入力大文字指定できなかったよね。。?

build.gradle.ktsの中身にrepository指定が必要

バージョンが変わったからなのかリポジトリ指定が必要になっていた。

plugins {
    `kotlin-dsl`
}

repositories {
    jcenter()
    google()
}

Gradle sync failed: No such propertyが発生していた

Depファイル(dependenciesを書いているobjectクラス)にパッケージ名が記載されていなかった。。。 パッケージ名を設定して、appのbuild.gradleにimportしたら動作した。

import dependencies.Dep

今日はここまで。

明日やること。

Navigationを使って画面を作る