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

oiopk7p5  于 5个月前  发布在  Android
关注(0)|答案(1)|浏览(83)

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

viewModelScope.launch {
            repository.getMessagesStream(project).cachedIn(viewModelScope).collectLatest {
                _uiState.value = UiState.Content(it)
            }
    }

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

lifecycleScope.launch {
                adapter.submitData(messageList)
            }


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

fun upDateSelectedMessage(messageId: Int, isSelected: Boolean) {
    viewModelScope.launch {
        withContext(Dispatchers.IO) {
            repository.updateSelectedMessage(isSelected = isSelected, messageId =messageId)
        }
    }
}


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

fun getMessagesStream(): Flow<PagingData<Message>> {
    val pagingSourceFactory = { appDao.getMessages() }

    return Pager(
        config = PagingConfig(pageSize = 30, enablePlaceholders = false),
        pagingSourceFactory = pagingSourceFactory
    ).flow
}


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

ujv3wf0j

ujv3wf0j1#

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

相关问题