android 在pagingAdapter,paging 3库中选择/删除项目时,防止滚动到列表顶部

oiopk7p5  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(173)

在我的viewModel中,我收集一个流

  1. viewModelScope.launch {
  2. repository.getMessagesStream(project).cachedIn(viewModelScope).collectLatest {
  3. _uiState.value = UiState.Content(it)
  4. }
  5. }

字符串
并在ui上观察时将其提交给adapter

  1. lifecycleScope.launch {
  2. adapter.submitData(messageList)
  3. }


在我的适配器中,我有一个选择/删除项目的功能。逻辑涉及使用布尔值(isSelected)更新房间数据库。

  1. fun upDateSelectedMessage(messageId: Int, isSelected: Boolean) {
  2. viewModelScope.launch {
  3. withContext(Dispatchers.IO) {
  4. repository.updateSelectedMessage(isSelected = isSelected, messageId =messageId)
  5. }
  6. }
  7. }


问题:
当我进一步向下滚动列表并从那里选择/取消选择时,列表向上滚动到顶部。我没有网络服务,我只从房间数据库获取数据。

  1. fun getMessagesStream(): Flow<PagingData<Message>> {
  2. val pagingSourceFactory = { appDao.getMessages() }
  3. return Pager(
  4. config = PagingConfig(pageSize = 30, enablePlaceholders = false),
  5. pagingSourceFactory = pagingSourceFactory
  6. ).flow
  7. }


当一个项目被选中/删除时,我如何防止滚动到顶部?

ujv3wf0j

ujv3wf0j1#

试试PagingConfig(pageSize = 30, enablePlaceholders = true)

相关问题