Inflearn brand logo image

Inflearn Community Q&A

gwise's profile image
gwise

asked

Modern Android - Using Kotlin and Jetpack

[Kotlin] DataBinding

Kotlin DataBinding

Written on

·

212

1

MainViewModel에서 
var todos: LiveData<List<Todo>>
init {
todos = getAll()
}

이 부분을 프로퍼티로 변경하면 될 줄 알았는데
안됩니다.
val todos: LiveData<List<Todo>>
get() {
return getAll()
}
프로퍼티를 사용 할 수 있는 방법이 궁금합니다.

androidkotlinjetpack

Answer 7

1

gwise님의 프로필 이미지
gwise
Questioner

val todos = db.todoDao().getAll()
더 심플한 방법을 알려 주셔서 감사합니다.

1

survivalcoding님의 프로필 이미지
survivalcoding
Instructor

아. 제가 착각했네요. getter로 리턴하도록 하면 데이터바인딩으로 반영이 안 되네요.

1

survivalcoding님의 프로필 이미지
survivalcoding
Instructor

이상하네요. 저도 혹시나 해서 제공해 주신 getter 구현해서 확인해 봤는데 잘 동작했습니다. 혹시 액티비티 쪽에서 todos를 바라보도록 수정하는 것을 잊거나 하지는 않으셨을까요?

1

survivalcoding님의 프로필 이미지
survivalcoding
Instructor

getAll() 메서드는 없애도 되고요. 다음과 같이 프로퍼티로 바로 접근하시면 됩니다.

val todos = db.todoDao().getAll()

제시해 주신 getter 코드도 잘 동작할 것 같은데요

0

gwise님의 프로필 이미지
gwise
Questioner

<TextView
android:id="@+id/result_text"
android:text="@{viewModel.todos.toString()}"

강의에서 사용한 성공했던 소스는 수정하지 않고
MainViewModel에서 프로퍼티만 추가했습니다.

0

gwise님의 프로필 이미지
gwise
Questioner

메뉴얼을 보니 LiveData가 BaseObservable의  기능을 포함하고 있었네요. 

0

gwise님의 프로필 이미지
gwise
Questioner

BaseObservable를 사용해야 하는건가 고민하고 있었는데 답변을 주셨네요. 감사합니다. 

val todos: LiveData<List<Todo>>
get() {
return getAll()
}
이렇게 하면 에러는 안나는데 화면에 반응이 없습니다.
gwise's profile image
gwise

asked

Ask a question