일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Abstract Factory
- PrototypePattern
- 함수형프로그래밍
- 디자인패턴
- Design Pattern
- 추상 팩토리
- 디자인패턴 #
- El
- 추상팩토리패턴
- designPattern
- Observer Pattern
- factory method
- a
- ㅓ
- Singleton
- 프로토타입 패턴
- 옵저버 패턴
- 팩토리 메소드
- r
- 빌터패턴
- 코틀린
- builderPattern
- ㅋㅁ
- 싱글톤
- F
- Functional Programming
- Kotlin
- Today
- Total
목록Android Jetpack Architecture/Paging3 (11)
오늘도 더 나은 코드를 작성하였습니까?
RemoteMediator의 기본 구현 Pager가 데이터를 모두 사용했거나 기존 데이터가 무효화되었을 때 네트워크에서 더 많은 데이터를 로드하는 것입니다. RemoteMediator는 로드 동작을 정의하기 위해 재정의해야 하는 load() 메서드를 포함합니다. 일반적인 RemoteMediator 구현에는 다음 매개변수가 포함됩니다. query 백엔드에서 검색할 데이터를 정의하는 쿼리 문자열 database: 로컬 캐시의 역할을 하는 데이터베이스 networkService: 백엔드 서비스 API 요청 RemoteMediator 구현을 만듭니다. Key 유형과 Value 유형은 동일한 네트워크 데이터 소스의 PagingSource를 정의하는 경우와 동일하다. @OptIn(ExperimentalPagingA..
네트워크 연결이 불안정하거나 네트워크에 연결이 되어있지 않은 경우 사용자 앱 사용자 경험 상승. ---> 네트워크와 로컬 데이터베이스에서 동시에 페이징하는 것 데이터 로드 조정하기 페이징 라이브러리는 사용 사례에 맞는 RemoteMediator 구성요소를 제공 RemoteMediator는 앱이 캐시된 데이터()를 모두 사용한 경우 페이징 라이브러리에서 보내는 신호 역할을 합니다. 신호를 사용하여 네트워크에서 추가적으로 데이터를 로드하고 로컬 데이터베이스에 저장합니다. PagingSource는 로컬 데이터베이스에서 데이터를 로드하고 표시할 UI에 제공합니다. RemoteMediator load( ) 구현 - 정지 함수이므로 장기 작업을 안전하게 실행할 수 있습니다. - 네트워크 소스에서 새로운 데이터를 가..
Activity의 onCreate() / fragment onViewCreated() 에서 최종적인 페이징된 반응형 데이터 스트림을 소비한다. PagingDataAdapter 클래스의 인스턴스를 만듭니다. 페이징된 데이터를 표시할 RecyclerView 목록에 PagingDataAdapter 인스턴스를 전달합니다. PagingData 스트림을 확인하고 생성된 각 값을 어댑터의 submitData() 메서드에 전달합니다 val viewModel by viewModels() val pagingAdapter = UserAdapter(UserComparator) val recyclerView = findViewById(R.id.recycler_view) recyclerView.adapter = pagingAda..
PagingDataAdapter는 recyclerAdapter를 확장한다. 1. 데이터 로드 상태(LoadState)에 따른 Header/ Footer에 LoadStateAdapter 설정 2. LoadState를 알수 있는 Listener 제공 3. 아이템 항목을 다시 로드하는 기능 제공 4. 아이템 항목 구분자 설정 5. DiffUtil.ItemCallback을 지정을 통해 ListAdapter를 사용할때와 같이 사용할 수 있음. private fun initAdapter() { // 머릿목록 바닥목록 어뎁터 설정. binding.list.adapter = adapter.withLoadStateHeaderAndFooter( header = ReposLoadStateAdapter { adapter.re..