본문 바로가기

안드로이드

(62)
[안드로이드 Jetpack Compose Paging3 시리즈] Local Data Source 생성하기 #8 1. 로컬 데이터베이스에 접근하기 위한 Local Data Source 안녕하세요. 지난 포스팅에서는 안드로이드 Jetpack Compose Paging3 라이브러리를 사용할 때 로컬 데이터베이스에 캐시 데이터를 저장하기 위해서 Room 라이브러리를 이용하여 데이터베이스를 세팅해 주었습니다. 이번 포스팅에서는 데이터베이스와 상호작용을 하기 위한 Local Data Source를 세팅하겠습니다. 2. Local Data Source 세팅하기 RemoteMediator는 안드로이드 Jetpack Compose의 Paging3 라이브러리의 핵심 컴포넌트 중 하나로, 네트워크와 로컬 데이터베이스 간의 데이터 동기화를 담당합니다. 그래서 데이터베이스와 상호작용을 할 수 있는 Local Data Source를 먼저..
[안드로이드 Jetpack Compose Paging3 시리즈] Room Database 세팅하기 #7 1. RemoteMediator 구현을 위해 Room Database 세팅 안녕하세요. 이번 포스팅에서는 Jetpack Compose Paging3 라이브러리에서 RemoteMediator를 구현하기 위해 Room Database 세팅을 진행하겠습니다. 지난 포스팅에서 설명했듯이, RemoteMediator는 Paging3 라이브러리로 불러온 데이터를 로컬 데이터베이스에 저장한다고 말씀드렸습니다. 그래서 먼저 Room Database를 세팅한 후, RemoteMediator를 구현해야 합니다. 2. Data Layer에 데이터베이스 관련 클래스 및 인터페이스 생성 Data Layer에 Room 데이터베이스 구성을 위한 파일들을 생성하겠습니다. 어렵게 생각하지 말고 간단하게 생각하면 쉽습니다. 데이터베이스..
[안드로이드 Jetpack Compose Paging3 시리즈] RemoteMediator 파헤치기 #6 1. 네트워크, 데이터베이스에서 페이징을 구현하기 위한 RemoteMediator 안녕하세요. 지난 포스팅에서는 네트워크 통신만을 이용해서 페이징 기능을 구현했었습니다. 이번 시간에는 안드로이드 Jetpack Compose Paging3 시리즈에서 개념이 어렵다고 생각하는 RemoteMediator의 원리 및 사용방법에 대해서 설명하고, 프로젝트에 RemoteMediator를 적용해 보는 과정을 설명하겠습니다. 2. RemoteMediator 원리 안드로이드 Jetpack Compose Paging3 라이브러리는 RemoteMediator를 제공합니다. RemoteMediator는 네트워크를 통해 가져온 데이터를 페이징 데이터로 활용하는 것이 아니라 로컬 데이터베이스(Room)에 저장합니다. 이렇게 로컬..
[안드로이드 Jetpack Compose Paging3 시리즈] LazyVerticalGrid 구현 및 Navigation #5 1. LazyColumn을 LazyVerticalGrid로 변경 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose Paging3 라이브러리에서 불러온 데이터를 LazyColumn에서 LazyVerticalGrid로 변경하는 과정에 대해 알아보고, 영화 아이템을 클릭했을 때 클린 아키텍처 시리즈에서 구현한 영화 상세 화면으로 이동하는 기능을 Navigation을 통해 구현하겠습니다. 1-1. LazyVerticalGrid 설명 및 구현 LazyColumn이 리스트 형태의 데이터를 세로로 표시하는 데 사용되는 것과 달리, LazyVerticalGrid는 격자(grid) 형태로 데이터를 표시할 때 사용됩니다. 이를 통해 사용자에게 더 다양한 형태의 UI를 제공할 수 있습니다. 이제 Lazy..
[안드로이드 Jetpack Compose Paging3 시리즈] LazyColumn 구현 #4 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 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 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 1. Paging3 라이브러리 소개 안녕하세요. 오늘은 안드로이드 Jetpack Compose Paging3 라이브러리에 대해 소개하고 이론을 정리하겠습니다. 최근에는 리스트 형태로 많은 정보를 보여주고 상호작용을 하고 있습니다. 특히 모바일에서는 메모리나 공간 절약을 위해 무한 스크롤 방식으로 많이 구현하게 됩니다. 그래서 많은 데이터를 쪼개서 보여주는 Paging 형태로 개발되고 있습니다. Paging3 라이브러리는 이러한 작업을 효율적으로 할 수 있게 해 주며 안드로이드 권장 아키텍처와 함께 사용될 수 있도록 설계된 라이브러리입니다. 직접 써본 결과, Jetpack Compose와 함께 활용될 때 더 강력했던 것 같습니다. 2. Paging3 라이브러리 필요성 대용량 데이터를 가진 애플리케이션에서 ..