I am developing an android app using:
- Compose
- Navigation
- Paging3
The problem is
- User access "List Fragment" which shows some lists as "ViewPager - HorizontalPager(Compose)"
- Click one of them, and the user navigates to "Details Fragment".
- Click "back" button, and the user navigates to back "List Fragment".
- But at this time, the list is refreshed.
View (List Fragment):
@AndroidEntryPoint
class ArticlesFragment : Fragment() {
private val vm: ArticlesViewModel by viewModels()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?,
): View {
setup()
return ComposeView(requireContext()).apply {
setContent {
Theme {
Scaffold {
Articles(vm.articles.collectAsLazyPagingItems())
}
}
}
}
}
@OptIn(ExperimentalPagerApi::class)
@Composable
private fun Articles(articles: LazyPagingItems<Article>) {
HorizontalPager(
count = articles.itemCount,
state = vm.pagerState,
) { page ->
articles[page]?.let { article ->
ArticleUi(article)
}
}
}
}
ViewModel class:
@OptIn(ExperimentalPagerApi::class)
@HiltViewModel
class ArticlesViewModel @Inject constructor(
private val getArticlesUsecase: GetArticlesUsecase
) {
val pagerState = PagerState()
val articles: Flow<PagingData<Article>> = getArticlesUsecase.get()
}