본문 바로가기

Programming/Android_Kotlin

(5)
Array의 toList()와 asList() Array를 List로 변환하는 중에 Array의 메서드로 toList()와 asList()가 있는 것을 보고 무슨 차이점이 있는 건지 궁금해 검색해봤다. 1. toList() toList()는 대상 Array를 복사해 새로운 인스턴스로 반환한다. val array = arrayOf(1, 2, 3) val list = array.toList() array[0] = 4 println(list) // 1, 2, 3 2. asList() asList()는 대상 Array와 동일한 배열 요소를 공유하는 List를 반환한다. val array = arrayOf(1, 2, 3) val list = array.asList() array[0] = 4 println(list) // 4, 2, 3 toList()와 달리 ..
RecyclerView 첫 번째, 마지막 아이템 간격 주기 구현을 하다보면 위 사진처럼 RecyclerView의 첫 번째 아이템에만 간격을 주고싶을 때가 있다. 하지만 이럴 때 RecyclerView의 왼쪽에 Margin을 주는 방식으로 구현한다면 스크롤이 잘리게 돼서 모양이 안 예쁘다. 우리가 원하는 건 이런 느낌이 아니다. 이런 저런 방법을 찾아봤는데 생각보다 간단히 구현이 가능했다. clipToPadding 속성을 false로 주고 padding을 주면 원하는 대로 구현이 된다. padding만 줄 경우 margin을 줬을 때처럼 스크롤이 잘리게 되는데, clipToPadding을 false로 설정한다면 padding을 주되 스크롤이 잘리지 않는다. RecyclerView 자체는 padding의 영향을 받지 않고 스크롤이 원하는 대로 구현되는 것을 확인할 ..
RecyclerView Adapter 연동하기 Recycler View란? 리사이클러뷰(RecyclerView)는 많은 리스트 데이터들을 효율적으로 렌더링하기 위해 제공되는 뷰로, 기존에 쓰이던 리스트뷰(ListView)보다 성능과 유연성이 뛰어나 리스트뷰를 대체하고있다. 지금와서 리스트뷰는 안 쓰인다고 보면 된다. 리사이클러뷰가 뭔지 간단하게 설명하자면 많은 수의 데이터를 스크롤 가능한 리스트 형태로 표시해주는 뷰그룹이라고 할 수 있다. 리사이클러뷰를 사용해 데이터를 표시하기 위해서는 3가지 구성 요소를 구현해야한다. Adapter: 데이터를 사용해 뷰를 생성하는 역할 LayoutManager: 아이템들이 나열되는 형태를 관리하는 역할. 이를 사용해 수평, 수직 형태로 표현하는 건 물론 그리드 등의 형태로도 표시가 가능하다. ViewHolder: ..
Room DB 사용하기 Room DB란? 2017년 구글 I/O에서 아키텍쳐 컴포넌트에 소개된 라이브러리로, SQLite의 추상 레이어를 제공하여 SQLite의 객체를 매핑하는 역할을 한다. 다시 말해 SQLite의 모든 기능을 사용할 수 있으며, DB로의 접근을 편하게 도와주는 라이브러리라 할 수 있다. SQLite와 비교해서 컴파일 도중 SQL에 대한 유효성 검사가 가능하며, schema가 변경될 경우에도 수동으로 업데이트할 필요 없이 쉽게 해결이 가능하다. 특히 getter, setter와 같은 상용구 코드 사용 없이 매핑이 가능해 무의미한 코드 작성 시간을 줄여준다. 학교에서 모바일 프로그래밍 과목을 수강하며 처음 접하게 된 로컬DB였는데 쉽게 따라하고 응용이 간편해 내부DB가 필요한 경우 주로 사용했다. 현재는 Rea..
Spinner에 데이터 연동하기 처음 Playstore에 등록했던 앱인 g to mL 변환기에서 변환 대상 항목을 설정하기 위한 View로 Spinner를 채택했다. 많은 공간을 차지하지 않고 다양한 항목을 보여줄 수 있어 다양한 용도로 활용이 가능하다. 우선 layout의 xml 파일에 Spinner를 추가해주자. 여기서 spinnerMode 항목을 비워두거나 dropdown으로 지정하면 드롭다운 메뉴, dialog로 지정하면 팝업 형식의 다이얼로그로 표시된다. Spinner를 넣기만 하면 기능은 정상적으로 작동한다. 나머지는 데이터를 넣어주기만 하면 되는데 두 가지 방법이 있다. 1. xml에서 직접 넣어주기 res/values/arrays.xml 파일에 string-array resource를 넣어놓고 layout xml에서 직접..