내가 이 클래스를 사용하게 된 이유 내가 사용하던 RecyclerView에는 각 아이템 하단에 구분선(Divider)이 있다. 이전에는 해당 아이템을 구성하는 xml에 MaterialDivider를 배치했었다. 새로운 요구사항이 들어오면서 구조 변경의 필요성을 느끼게 되었다. 새로운 요구사항은 마지막 아이템은 구분선이 가로 전체를 차지하도록 변경하는 것이었다. 새로운 요구사항에 따른 시도 RecyclerView Adapter의 onBindViewHolder에서 마지막 아이템을 확인해서 AttributeSet을 다시 할당해주었다. 나름 그럴싸한 로직이라 생각했다.(내 기준) 그 결과, 알 수 없는 버그들이 밀려들어왔다. 처음 adapter를 할당했을 땐 마지막 아이템에만 해당 AttributSet이 적용되..
Step 1. Create the SleepNight entity 이번 과제에서는 하룻밤 수면을 데이터베이스 엔티티를 의미하는 annotated data class로 정의한다. 하룻밤의 수면을 위해서는 시작 시간, 종료 시간, 퀄리티 등급을 기록해야 한다. 그리고 하룻밤을 구분하기 위해 고유 아이디가 필요하다. 1. database 패키지의 SleepNight.kt 파일을 연다. 2. SleepNight 데이터 클래스를 id, 시작 시간(millisecond 단위), 종료 시간(millisecond 단위), 숫자의 수면 퀄리티 등급 파라미터를 사용해 만든다. 품질 데이터가 수집되지 않았다는 것을 나타내기 위해 sleepQuality를 -1로 초기화해야 한다. 시작 시간을 유효한 시간으로 초기화한다. 선택..
안드로이드에서 데이터는 데이터 클래스로 표현된다. 이 데이터는 함수 호출에 의해 접근되고 수정될 수도 있다. 그러나, 데이터베이스 세계에서는 데이터에 접근하고 수정하기 위해서는 entity와 query가 필요하다. 엔티티는 속성과 함께 데이터베이스에 저장할 객체나 개념을 의미한다. 우리의 앱 코드에서 테이블을 정의하는 entity class가 필요하다. 해당 클래스의 각 인스턴스는 해당 테이블의 행을 의미한다. Entity class는 데이터베이스의 정보를 표시하고 상호 작용하는 방법을 Room에 알려주는 맵핑이 있다. 우리 앱에서 엔티티는 하룻밤 수면에 관한 정보를 가지고 있을 것이다. 쿼리는 테이블(혹은 테이블 조합)의 정보 또는 데이터 요청이거나 데이터에 대한 작업을 수행하기 위한 요청이다. 일반적..