마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ViewModel,LiveData 등을 사용시 리사이클러뷰 아이템 업데이트 관련

0 추천
MVVM 디자인 패턴을 공부하기 시작했습니다. 아직 MVVM가 무엇인지 개념부터만 이해하려고 하는데

이해는 한것 같은데 막상 코드에 적용시키려고하니 어떻게 손을대야할지 감이 안잡히네요.

 

아무튼 질문은 제목 그대로입니다.

ViewModel과 LiveData를 사용하면 뷰에서 뷰모델을 관찰하여 데이터에 변화가 생긴다면

뷰(UI)를 업데이트한다고 하는데요,

여기서 궁금한것이 이게 리사이클러뷰에도 적용이 되는가 입니다

 제가 앞서 만들다가 코틀린으로 전향하기 위해 중단한 앱에서 리사이클러뷰를 사용하고

아이템을 동적으로 추가/삭제하고 데이터를 변화하기에 효율성을 위해서 DIffUtil을 사용했습니다

 

그런데 ViewModel과 LiveData를 사용하면 뷰에서 마찬가지로 리사이클러뷰 아이템이 변화한다면

바로 업데이트가 되나요? 만약에 된다면 DiffUtil 은 굳이 쓸필요가 없게 되는 것인지..

 

아니면 아이템 / 추가 삭제는 감지하지 못하고 아이템 자체의 데이터만 감시하는 것인가요?
codeslave (3,940 포인트) 님이 2021년 5월 12일 질문

1개의 답변

0 추천

아이템 / 추가 삭제는 감지하지 못하고 아이템 자체의 데이터만 감시하는 것인가요?

에 대한 직접적인 답은 자동으로 해주지는 않지만 구현에 따라 자동으로 처리할 수도 있습니다.

ViewModel의 데이터 변경을 별도의  명시적인 코드없이(리사이클리뷰의 경우는 바인딩업댑터를 작성해야 합니다.) 하려면 데이터바인딩 라이브러리를 사용하셔야 합니다. 데이터 바인딩은 안드로이드 스튜디어에 기본적으로 플러그인이 들어가 있기 때문에 바로 사용하실 수 있습니다. 사실 이 라이브러리에 대해서는 개발자들 사이에서 찬반이 팽팽히 갈리는 것 같습니다. 저 같은 경우는 아직 프로젝트에 사용하지는 않고 있는데, UI의 요구사항 때문에 도입을 검토 중입니다.

제 생각에는 안드로이드의 MVVM을 익히기 위해서는 먼저 수동으로 ViewModel에서 LiveData를 통해 View에 필요한 데이터를 liveData.value나 liveDtata.postValue(권장되는 함수) View쪽에 전달해 주고 View에서는 이 데이터가 오면 거기에 맞게 View를 업데이트 해주는 코드를 먼저 작성해 보시길 권합니다. 그리고 나서 필요에 따라 데이터 바인딩으로 넘어가시는게 안드로이드 아키텍트 컴포넌를 파악하는데 도움이 된다고 생각합니다.

Github이나 온라인 상에 안드로이드 MVVM + Kotlin 예제는 넘쳐납니다. 간단히 검색해 보시면 원하시는 검색결과를 너무나도 많이 찾을 수 있습니다. 구글의 샘플코드도 검색해 보시구요.

spark (224,800 포인트) 님이 2021년 5월 12일 답변
...