Android Jetpack Architecture/Paging3
UI에 페이징된 데이터 표시
hik14
2021. 8. 19. 15:48
Activity의 onCreate() / fragment onViewCreated() 에서 최종적인 페이징된 반응형 데이터 스트림을 소비한다.
- PagingDataAdapter 클래스의 인스턴스를 만듭니다.
- 페이징된 데이터를 표시할 RecyclerView 목록에 PagingDataAdapter 인스턴스를 전달합니다.
- PagingData 스트림을 확인하고 생성된 각 값을 어댑터의 submitData() 메서드에 전달합니다
val viewModel by viewModels<ExampleViewModel>()
val pagingAdapter = UserAdapter(UserComparator)
val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
recyclerView.adapter = pagingAdapter
// Activities can use lifecycleScope directly,
// but Fragments should instead use viewLifecycleOwner.lifecycleScope.
lifecycleScope.launch {
viewModel.flow.collectLatest { pagingData ->
pagingAdapter.submitData(pagingData)
}
}
submitData() 메서드는 PagingSource가 무효화되거나 어댑터의 새로고침 메서드가 호출될 때까지 중단되며 반환하지 않습니다. 즉, submitData() 호출 이후의 코드가 의도한 것보다 훨씬 늦게 실행될 수 있기 때문에 사용자 편의를 고려하여 로딩및 대기 화면이 필요하다.