모던 안드로이드 - 코틀린과 JetPack 활용 #12 - [Kotlin] LiveData

시작하기 전에...

#11는 #12와 내용이 같은데, 언어는 자바입니다. 자바 관련 강의 내용은 후순위로 정리 예정입니다.


유료 강의 URL

https://www.inflearn.com/course/%EB%AA%A8%EB%8D%98-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%A0%9C%ED%8A%B8%ED%8C%A9/lecture/49127?tab=curriculum&volume=1.00&speed=1.25


LiveData<T>

  • 데이터의 변화를 관찰하고 이를 처리할 수 있다.
  • T: 관찰할 데이터의 타입
  • LiveData 클래스의 observe(owner, observer) 메소드를 호출하여 데이터 관찰 요청
    • owner: observe 요청자이며, LifecycleOwner 인터페이스를 구현한 객체여야 함
    • observer: 데이터의 변화 처리 객체
observe 메소드 호출 예 - 점수 관찰

60점 이상이면 합격 플래그 on, 미만이면 이를 off한다.

var isPass = false
val liveScore = LiveData<Int>(0)

liveData.observe(owner) { observedScore ->
    isPass = if (observedScore >= 60) {
        true
    } else {
        false
    }
}

owner의 타입은 LifecycleOwner 인터페이스이며, AppCompatActivity 클래스는 이를 구현하고 있습니다. 따라서 AppCompatActivity를 상속받는 클래스 안에서는 owner 파라메터에 this를 대입해도 됩니다.


Room DB와 LiveData

  • SELECT 문 실행하는 메소드의 리턴 타입을 LiveData<T>로 지정 가능
  • 이 라이브데이터를 observe 하면, insert, update, delete 실행될 때마다 observer가 실행됨
  • 장점: DB 데이터 바뀔 때마다 특정 작업 처리 가능 (예: UI 업데이트)
예 - DAO 클래스
@Dao
interface TodoDao {

    @Query("SELECT * FROM Todo")
    fun getAll(): LiveData<List<Todo>>

    @Insert
    fun insert(todo: Todo)

    @Update
    fun update(todo: Todo)

    @Delete
    fun delete(todo: Todo)

}
예 - DAO 객체로부터 Todo 리스트 관찰
val db = Room.databaseBuilder(applicationContext, AppDatabase::class.java, "todo-db").apply {
    allowMainThreadQueries()
}.build()

// Todo 리스트 내용을 텍스트로 보여주며, Todo 테이블의 내용이 바뀔 때마다 업데이트.
db.todoDao().getAll().observe(activity) { todoList ->
    textView.text = todoList.toString()
}

모던 안드로이드 - 코틀린과 Jetpack 활용 (지난 내용)

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.20
TRX 0.15
JST 0.029
BTC 64440.63
ETH 2653.79
USDT 1.00
SBD 2.80