[안드로이드 Jetpack Compose Paging3 시리즈] LazyColumn 구현 #4
·
안드로이드/Compose Paging3
1. PagingData, LazyColumn을 사용한 무한 스크롤 리스트 구현 안녕하세요. 지난 시간에는 안드로이드 Jetpack Compose의 Paging3 라이브러리를 사용하기 위해 PagingSource와 PagingConfig를 활용하여 네트워크에서 데이터를 페이징 처리하는 방법을 살펴보았습니다. 이번 포스팅에서는 안드로이드 Jetpack Compose의 LazyColumn을 사용해서 Paging3 라이브러리에서 불러온 데이터를 사용자에게 보여주는 기능을 구현하겠습니다. 1-1. LazyColumn 개념 LazyColumn은 Jetpack Compose에서 제공하는 컴포저블 함수로, 화면에 보이는 부분만 렌더링 하기 때문에 RecyclerView와 마찬가지로 리스트를 효율적으로 표시할 수 있게..
[안드로이드 Jetpack Compose Paging3 시리즈] PagingConfig, PagingSource 적용하기 #3
·
안드로이드/Compose Paging3
1. Paging 데이터 스트림 구현 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose Paging3 라이브러리의 PagingConfig와 PagingSource를 구현해서 페이징 데이터 스트림을 구현하겠습니다. MovieApi Interface에 영화 리스트를 불러오는 함수를 정의한 후, MovieRepository에 PagingConfig와 PagingSource를 적용해서 Pager 객체를 만들겠습니다. DB 캐싱은 제외한 페이징을 구현할 것이기 때문에 RemoteMediator는 구현하지 않아도 됩니다. 1-1. MovieApi 및 MovieRemoteDataSource에 getMovies 함수 정의 네트워크 통신을 통해 영화 목록을 불러오기 위해 retrofit interfa..
[안드로이드 Jetpack Compose Paging3 시리즈] Paging3 라이브러리 구조 설명 #2
·
안드로이드/Compose Paging3
1. PagingConfig, PagingSource, RemoteMediator 개념 안녕하세요. 오늘은 안드로이드 Jetpack Compose Paging3 라이브러리에서 사용되는 개념인 PagingConfig, PagingSource, RemoteMediator에 대해서 포스팅하겠습니다. Paging3 라이브러리를 사용하면 DB 캐싱 여부를 선택할 수 있는데, DB 캐싱은 제외한 페이징 기능 먼저 구현하고, 추후에 RemoteMediator를 구현해서 DB 캐싱까지 포함된 페이징 처리도 하겠습니다. 먼저, 페이징을 구현하기에 앞서 PagingConfig, PagingSource, RemoteMediator 개념에 대해서 설명하겠습니다. 1-1. PagingConfig PagingConfig는 페이징..
[안드로이드 Jetpack Compose Paging3 시리즈] Paging3 라이브러리 소개 #1
·
안드로이드/Compose Paging3
1. Paging3 라이브러리 소개 안녕하세요. 오늘은 안드로이드 Jetpack Compose Paging3 라이브러리에 대해 소개하고 이론을 정리하겠습니다. 최근에는 리스트 형태로 많은 정보를 보여주고 상호작용을 하고 있습니다. 특히 모바일에서는 메모리나 공간 절약을 위해 무한 스크롤 방식으로 많이 구현하게 됩니다. 그래서 많은 데이터를 쪼개서 보여주는 Paging 형태로 개발되고 있습니다. Paging3 라이브러리는 이러한 작업을 효율적으로 할 수 있게 해 주며 안드로이드 권장 아키텍처와 함께 사용될 수 있도록 설계된 라이브러리입니다. 직접 써본 결과, Jetpack Compose와 함께 활용될 때 더 강력했던 것 같습니다. 2. Paging3 라이브러리 필요성 대용량 데이터를 가진 애플리케이션에서 ..
[안드로이드 코틀린 Sealed class] 특성 및 코드 예제 #2
·
안드로이드/코틀린
안드로이드 코틀린 Sealed Class의 3가지 특성 안녕하세요. 지난 포스팅에서는 Kotlin의 enum class 및 sealed class의 사용 이유에 대해서 살펴보았습니다. 오늘은 sealed class의 특성을 제한된 클래스 계층, 타입 안전성, 그리고 서브 클래스 타입 차이 (class, data class, object) 세 가지 기준으로 설명하겠습니다. 1. 제한된 클래스 계층 sealed class는 Kotlin에서 제한된 클래스 계층을 구성하기 위해 사용되는 특별한 종류의 클래스입니다. sealed class의 가장 큰 특징은 그 하위 클래스가 반드시 sealed class와 같은 파일 내에서 선언되어야 한다는 것입니다. 컴파일러는 sealed class와 같은 파일 내에 선언된 하..
[안드로이드 코틀린 Sealed class] 설명 및 코드 예제 #1
·
안드로이드/코틀린
1. 안드로이드 코틀린의 Enum class의 한계 안녕하세요. 지난 포스팅에서는 enum class에 대해 학습했었습니다. 코틀린의 enum class는 속성, 함수를 구현할 수 있어서 다른 언어에 비해서 강력한 기능을 제공해 줬었습니다. 그런데 이러한 enum class에도 한계가 있었는데요. 아래 코드처럼 상수값 별로 다른 데이터 타입이 필요한 경우였습니다. enum class TrafficLight(val guide: String, val additionalData: String?) { RED("Stop", null), // null을 추가해줘야함 YELLOW("Slow down", null), // null을 추가해줘야함 GREEN("Go", "Additional data for green") ..
[안드로이드 코틀린 Enum class] 설명 및 코드 예시
·
안드로이드/코틀린
안드로이드 코틀린의 Enum Class는 어떻게 활용되고 있을까? 안녕하세요. 이번 시간에는 코틀린의 Enum class에 대한 설명과 코드로 어떻게 사용하는지 설명하겠습니다. Enum은 코틀린뿐만 아니라 다른 언어에서도 상수값을 활용할 때 많이 사용하게 됩니다. 그런데 코틀린에서는 Enum class 내부에 속성과 함수를 구현할 수 있는 등 다양한 기능을 제공해서 캡슐화에도 유리한 편입니다. 즉, enum 상수는 클래스 객체처럼 동작할 수 있으며, enum class 내에서 고유한 속성과 함수를 가질 수 있습니다. 그래서 코드의 가독성을 높이고, 관련된 상수 값들을 캡슐화하여 관리할 수 있게 해 줍니다. 1. 코틀린의 Enum Class의 특징 when, if 조건등을 처리하면 자동완성이 되기 때문에 ..
[안드로이드 클린 아키텍처 시리즈] UI Layer 구현 4편 (with Jetpack Compose) #11
·
안드로이드/클린 아키텍처
1. 안드로이드 클린 아키텍처 UI Layer 4편 안녕하세요. 이전 포스팅에서는 Jetpack Compose를 활용한 화면 구성과 Compose Navigation, 그리고 ViewModel을 이용한 데이터 바인딩 과정에 대해 살펴보았습니다. 이번 포스팅은 클린 아키텍처 시리즈의 마지막 편으로, UI Layer에서 화면 이쁘게 꾸며보고 지금까지 포스팅한 클린 아키텍처를 정리하면서 시리즈를 마무리하겠습니다. 2. MovieDetailScreen 꾸미기 이전 포스팅에서는 서버로부터 불러온 영화에 대한 Entity의 정보를 문자열로만 출력했습니다. 이번 시간에는 해당 데이터를 StateFlow에 저장하고 MovieDetailScreen에서 compose를 활용해서 UI를 구현하겠습니다. 2-1. MovieD..