【发布时间】:2021-10-06 15:04:01
【问题描述】:
每当我尝试从惰性列列表中删除时,我都会得到 arrayIndexOutOfBoundException
这是数组
var productsList = remember { mutableStateListOf<Product>() }//I load products in this list
每当用户按下某个按钮时,我都会执行以下操作
productsList.remove(item)
我得到数组 arrayIndexOutOfBoundException 这也是我循环的方式
itemsIndexed(productsList) { index, item ->
无论如何要避免这个错误
有兴趣的人的完整代码:
fun MyProducts(navController: NavController,myProductsViewModel: MyProductsViewModel= viewModel()) {
var productsList = remember { mutableStateListOf<Product>() }
val scope = rememberCoroutineScope()
val listState = rememberLazyListState()
var currentImage = remember { mutableStateListOf<Int>() }
LaunchedEffect(key1 = Unit){
myProductsViewModel.getShop()
productsList.addAll(myProductsViewModel.productsList)
currentImage.addAll(List(productsList.size) {0})
}
var pickedImage: MutableState<String?> =remember { mutableStateOf("") }
BackHandler() {
navController.popBackStack()
}
LazyColumn(
Modifier
.fillMaxSize()
.padding(start = 16.dp),
horizontalAlignment = Alignment.Start,
verticalArrangement = Arrangement.spacedBy(8.dp)
,state = listState
) {
itemsIndexed(productsList) { index, item ->
.clickable {when(icon){
Icons.Default.Delete->{
scope.launch {
myProductsViewModel.removeProducts(item.product_id,item.shop_id,item)
productsList.remove(item)
}
}
Icons.Default.Edit->{
}
我在其余代码中访问相同的列表,但我认为它与问题无关
【问题讨论】:
-
至少要准确说出异常发生在哪一行。
-
或者代码块,如果你因为一些模糊的原因不确定确切的行。
-
logcat 没有显示哪一行最有可能出现异常,因为我正在使用约束布局。它只是告诉我 arraysize=2 和 index=2 所以它是 indexOutOfBoundException。
标签: android kotlin android-jetpack-compose