I am developing an android app using:
The problem is
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()
}
As @vitidev wrote in his comment.
Use cachedIn to avoid refresh
val articles: Flow<PagingData<Article>> = getArticlesUsecase.get().cachedIn(viewModelScope)