본문 바로가기

분류 전체보기147

Binding Adapter(바인딩 어댑터)를 배워보자! 1. Binding Adapter 1-1. Binding Adapter란? 2. 사용법 2-1. Adapter 2-2. Layout 2-3. Activity 3. Binding Adapter의 목적 4. 예제 1. Binding Adapter 1-1. Binding Adapter란? 뷰의 속성을 설정하는 메서드는 여러 가지가 있다. 당장 텍스트 뷰만 해도 텍스트 크기, 텍스트 컬러, 높이, 여백 등등 무수히 많은 옵션들이 있으니 말이다. 하. 지. 만. 그럼에도 불구하고 내가 원하는 기능의 메서드가 없다면 어떻게 해야 할까? 액티비티에서 내가 원하는 메서드를 만들어 사용하듯이 레이아웃에서도 내가 원하는 메서드를 만들어 사용할 수는 없을까? 결론부터 말하자면 할 수 있다. Binding Adapter를 사.. 2021. 5. 29.
퀵 정렬이란? 1. 퀵 정렬 1-1. 퀵 정렬이란? 1-2. 예시 1-3. 소스코드 1-4. 퀵 정렬의 시간 복잡도 1-5. 퀵 정렬은 얼마나 빠를까? 1. 퀵 정렬 1-1. 퀵 정렬이란? 이름값 하는 정렬 방법이다. 평균적으로 꽤나 빠른 속도를 보여준다. 여기서 평균적으로라고 한 이유는 [목차 1-4]에서 설명할 예정이다. 아무튼 이렇게 빠르게 정렬할 수 있는 이유는 분할 정복 방법을 사용했기 때문이다. 분할 정복 방법이란 큰 문제를 작은 문제로 쪼개어 문제를 해결하는 방식이다. 한 번에 먹기에 너무 큰 음식이 있으면 잘라먹듯이 한 번에 들기에 너무 무거운 짐이 있으면 나눠 들듯이 큰 문제를 해결하기 쉬운 작은 문제로 쪼개자는 것이다. 퀵 정렬은 이 개념을 도입한 방법인데 어떻게 정렬되는 건지 다음 목차에서 알아보자.. 2021. 5. 27.
View Binding과 Data Binding 예제 1. 들어가기에 앞서 2. 예제 2-1. 가장 기본적인 코드 2-2. View Binding 2-3. View Binding + ViewModel 2-4. View Binding + ViewModel + LiveData 2-5. Data Binding 2-6. Data Binding + ViewModel 2-7. Data Binding + ViewModel + LiveData 2-8. 깃허브 링크 1. 들어가기에 앞서 뷰 바인딩(View Binding) 데이터 바인딩(Data Binding) 뷰 모델(View Model) 라이브 데이터(LiveData) 이 게시글은 위 4개의 개념이 모두 잡혀있다는 가정하에 따로 자세한 설명을 하지 않을 예정이다. 조합별로 어떻게 사용하는지 어떤 게 좋은지 비교 및 연습.. 2021. 5. 18.
셸 정렬이란? 1. 셸 정렬 1-1. 셸 정렬이란? 1-2. 예시 1-3. 소스코드 1-4. 셸 정렬의 시간 복잡도 1-5. 셸 정렬은 삽입 정렬보다 얼마나 빠를까? 1. 셸 정렬 1-1. 셸 정렬이란? 셸 정렬은 삽입 정렬의 개선판 정도로 생각할 수 있다. 삽입 정렬은 거의 정렬되어 있는 수열이 주어졌을 때 좋은 효율을 보여준다는 장점이 있었지만 그 반대로 역순에 가까운 수열이 주어지면 그만큼 좋지 못한 효율을 보여주었다. 그래서 옛날에 도널스 셸이라는 사람이 "흠.. 수열을 어느 정도 정렬되게 바꾼 다음 삽입 정렬을 쓰면 좋지 않을까?" 해서 나온 게 셸 정렬이다. 실제로도 셸 정렬을 할 때 삽입 정렬을 사용한다. 그러니 삽입 정렬을 아직 모른다면 먼저 배우고 오자. 1-2. 예시 위와 같이 내림차순에 가까운 수열.. 2021. 5. 15.
LiveData(라이브 데이터)란? 1. LiveData란? 1-1. Observer 1-2. LiveData 1-3. LiveData의 장점 2. 사용법 2-1. gradle 2-2. LiveData 객체 생성 2-3. Observer 객체 생성 3. 예제 4. 더 알아보기 3-1. LifeCycleOwner 3-2. observeForever 1. LiveData란? 1-1. Observer class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // activity 설정 관련 소스 생략 DB에서 초기 아이템 목록 호출 UI 업데이트 추가 버튼 클릭 리스너 { 아이템 추가 UI 업데이트 } 삭제 버튼 클릭 리스너 { 아이.. 2021. 5. 14.