ViewModel의 기본적인 사용 목적은 UI Controller에서 보여줄 데이터를 관리하는 것이다. 일반적으로 ViewModel에 데이터를 LiveData로 관리하고 UI Controller가 그 데이터를 Observing 하는 구조로 만든다. 여기서 단일 데이터에 LiveData를 사용하면 문제가 되지 않지만 리스트에 LiveData를 단일 데이터처럼 적용하려고 하면 제대로 동작하지 않는다. 즉, 리스트 내부의 아이템 추가, 삭제와 같은 변경 사항이 일어나도 Observer에 등록된 콜백이 호출되지 않는다는 것이다. 위 그림의 View와 ViewModel의 관계에서 어떻게 리스트 데이터를 LiveData로 관리해서 내부 아이템의 변경사항까지 Observing 하도록 만들 수 있을까? LiveData..
Kotlin에서 지원하는 기능 중에서 Kotlin 코드에서 XML 인스턴스로 바로 접근이 가능하도록 도와주는 Android Extension이라는 기능이 있다. XML 인스턴스를 Kotlin으로 가져와서 사용할 수 있도록 만든 프로퍼티를 합성 프로퍼티(Synthetic Property)라고 한다. 이 프로퍼티는 클래스 내에 뷰 ID 이름으로 생성된다. 예를 들어 xml 코드에서 아래와 같은 Button을 하나 정의했다고 가정하자. 이 Button은 Android Extension에 의해 Kotlin의 합성 프로퍼티가 만들어진다. 이 프로퍼티는 아래 예제 코드처럼 Button의 id인 ‘btn_save’를 통해 접근할 수 있다. override fun onCreate(savedInstanceState: B..
강의 초반에 여러 아이템 중에 하나를 선택하기 위한 선택 위젯의 개념이 나왔었다. 선택 위젯의 종류로 ListView, GridView, Spinner 등이 있고, 그 중에 '[부스트코스 PJ2 정리노트] 이벤트와 리스트 뷰'에서 ListView의 사용법에 대해 정리한 적 있다. 하지만 RecyclerView의 많은 장점 때문에 ListView보다는 RecyclerView를 많이 사용한다. RecyclerView의 장점은 다음과 같다. ListView는 상하 스크롤만 지원하지만 RecyclerView는 상하 스크롤과 좌우 스크롤을 모두 지원한다. - 이는 처음 만들어질 때부터 레이아웃을 유연하게 구성할 때 있도록 설계되었기 때문이다. 각각의 아이템이 화면에 보이는 과정에서 뷰홀더(ViewHolder)를 ..
- Total
- Today
- Yesterday
- pecs
- Android
- python3
- 파이썬
- RuntimeException
- Java
- AsyncListDiffer
- 알고리즘
- 프로그래머스
- covariance
- SOCKET
- SQL Server
- SQL
- 내용제공자
- GitHub
- AndroidStudio
- Algorithm
- 안드로이드
- ViewHolder
- kotlin
- 위험권한
- 부스트코스
- RecyclerView
- gson
- DiffUtil
- personal access token
- MSSQL
- SQLD
- SQLiteOpenHelper
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |