🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

Kotlin DataBinding

20.08.08 21:01 작성 조회수 144

1

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

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

답변 7

·

답변을 작성해보세요.

1

지현명님의 프로필

지현명

질문자

2020.08.08

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

1

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

1

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

1

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

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

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

0

지현명님의 프로필

지현명

질문자

2020.08.08

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

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

0

지현명님의 프로필

지현명

질문자

2020.08.08

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

0

지현명님의 프로필

지현명

질문자

2020.08.08

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

val todos: LiveData<List<Todo>>
get() {
return getAll()
}
이렇게 하면 에러는 안나는데 화면에 반응이 없습니다.
채널톡 아이콘