LazyVerticalGrid 删除项目后,视图重新组合,但删除的项目仍然为“幽灵”

问题描述 投票:0回答:0

我刚开始使用 jetpack compose,我遇到了这个问题。我有一个 LazyVerticalGrid,它是从从 firestore 数据库中获取的列表中填充的,当我通过应用程序删除一个项目时,视图会更新并且不会显示已删除的项目,但是如果我单击位于该位置的另一个项目已删除的项目,在日志中我看到对已删除项目的引用,如果我单击下一个项目,我会看到上一个被选中。就好像删除元素的“幽灵”仍然存在并且索引被扭曲一样。

BrandViewModel我有:

   val brands = storageService.brands

StorageService

   val brands: Flow<List<Brand>>

StorageServiceImpl中:

override val brands: Flow<List<Brand>>
        get() =auth.currentUser.flatMapLatest { user ->
            currentBrandCollection(user.id).snapshots().map { snapshot -> snapshot.toObjects() }
        }

品牌屏幕

 val brands by viewModel.brands.collectAsStateWithLifecycle(initialValue = emptyList())
 ..........

 LazyVerticalGrid(
            state = listGridState,
            modifier = Modifier
                .padding(vertical = 4.dp)
                .padding(horizontal = 4.dp)
                .background(MaterialTheme.colorScheme.background)
                .padding(contentPadding),
            columns = GridCells.Adaptive(minSize = 124.dp),
        ) {
            itemsIndexed(brands) { index, brandItem->
         ..........

initial list

Select item card

Delete item

On tap on General Card, is select previous Card, Ferrarelle

android android-jetpack-compose flow
© www.soinside.com 2019 - 2024. All rights reserved.