「Android」スタジオを使ったシンプルなTodo Example(kotlin)


スタジオとは?

  • Android Jetpackが提供するデータベースアーキテクチャ
  • オブジェクト関係マッピング、ORMライブラリ
    データベース内のオブジェクトをjavaまたはcortlinオブジェクトにマッピングします.
  • スタジオの3つの主要コンポーネント

  • Entityデータベース内のテーブル・ロール
  • Daoデータベースへのアクセスに必要なメソッドを含める
    ex. Query, Insert, Update, Delete ...
  • DatabaseRoomDatabaseクラスの抽象クラスを継承
  • 📆 Todo Fileの例(kotlin)

  • 構築-階層設定
  • .xmlファイルの作成(View)
  • Todo.kt(データクラス),@Entity@PrimaryKeyの作成
    ->ルームで使用するオブジェクトファイル
  • TodoDao.kt,@Daoの作成
    ->Todoに対して実行するアクションを定義するインタフェースファイル
  • AppDatabase.kt,@Database(エンティティ=[],version=1)を作成
    ->RoomDatabaseを継承し、抽象メソッド
  • を作成する
  • アクティビティの作成
    ->AppDatabase変数宣言(オブジェクトの作成)
  • build.gradle (app)

    dependencies {
      def room_version = "2.2.6"
    
      implementation "androidx.room:room-runtime:$room_version"
      kapt "androidx.room:room-compiler:$room_version"
    
      // optional - Kotlin Extensions and Coroutines support for Room
      implementation "androidx.room:room-ktx:$room_version"
    
      // optional - Test helpers
      testImplementation "androidx.room:room-testing:$room_version"
    }

    activity_main.xml



    Todo.kt

    @Entity
    data class Todo(var todoList: String) {
        @PrimaryKey(autoGenerate = true)
        var id: Int = 0
    }
    relay autoGenerate=true:PK値1を自動的に増加

    TodoDAO.kt

    @Dao
    interface TodoDAO {
        @Query("SELECT * FROM Todo")
        fun getAll(): List<Todo>
    
        @Query("SELECT todoList FROM Todo")
        fun getTodoList(): MutableList<String>
    
        @Insert
        fun insert(todo: Todo)
        ...
    }

    AppDatabase.kt

    @Database(entities = [Todo::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun toDoDao(): TodoDAO
    }

    MainActivity.kt

    db = Room.databaseBuilder(baseContext, AppDatabase::class.java, "TodoDB")
                .allowMainThreadQueries()
                .build()
     // insert Todo
    db.toDoDao().insert(Todo(editTextTodo.get().toString()))
     // show TodoList
    binding.textViewTodoList.text = db.toDoDao().getTodoList().toString()