无法从ArrayList中删除Integer

时间:2019-07-25 22:51:53

标签: android kotlin

我正在尝试创建一个使用Android Room作为数据库的Android应用。我已经通过它们的ID链接了两个表。如果我检查是否应该销毁父级(因为没有子级),我会遇到一个ArrayList错误,其中包含那些子级ID。我无法从父级的ArrayList中删除id整数。

IdList.contains(childId)返回false。 记录IdList中的所有整数表明IdList中的childId

IdList.indexOf(childId)返回正确的值。 尝试IdList.removeAt(IdList.indexOf(childId))会引发错误,例如:java.lang.ClassCastException:java.lang.Double无法转换为java.lang.Integer

IdList.remove(childId)根本不执行任何操作(找不到childId)。

entryModel.entry.value?.let { meal ->
    val parentDao = db.mealParentDao()

    val parent = parentDao.findById(meal.childParentId)
    parent?.let {
        if (parent.childrenIds != null &&parent.childrenIds!!.size > 1) {

            var location: Int? = null
            parent.childrenIds?.forEachIndexed { index, i ->
                if (i == meal.childId) location = index
            }

            if (location != null) parent.childrenIds?.removeAt(location!!)

            parent.parentType?.remove(meal.childType)
            parentDao.updateMealSpecies(parent)
        } else parentDao.deleteById(parent.speciesId)
    }
    db.mealChildDao().deleteById(meal.childId)
}

我希望ArrayList没有删除的孩子的ID,但是ArrayList保持不变或使我的应用崩溃。

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我不确定这是怎么回事,但是在处理整数时,ArrayList.remove()存在一个众所周知的问题。

remove()方法已重载。可以使用一个对象来删除该对象,也可以使用一个整数索引来删除该索引处的元素。当传递remove()的整数时,即使该整数碰巧是列表的元素,它也会假定它是索引。

这可能是问题所在吗?