java - 数据在 for 循环中的数组列表内的数组列表中重复 Recylerview Koltin

标签 java android kotlin arraylist

我正在尝试在 koltin 中实现可扩展的 recylerveiew: 我尝试使用以下代码:

val DataItems = arrayListOf<faqBody>()
val ChildDataItems = arrayListOf<childItem>()
var ParentDataItem: faqBody
var ChildDataItem: childItem

for (item in 0..5) {
    ParentDataItem = faqBody()
    ParentDataItem.menuText = item.toString()
    for (item1 in 0..2) {
        ChildDataItem = childItem()
        ChildDataItem.menuText = item1.toString()
        ChildDataItems .add(ChildDataItem)
        ParentDataItem.childItem = childlist
    }
    DataItems .add(ParentDataItem)

在尝试上面的代码时,我在父项中获取子项的重复数据 如果子项是 2 父项是 2 父项设置良好,但子项与父项的 bcoz 一样重复 2 次。

任何人都可以帮助摆脱上述问题吗? 请查找图片供您引用。

enter image description here

最佳答案

您的ChildDataItems超出了循环范围。为第一个父项添加新元素 2 次,但是列表保持不变,并且新元素添加到列表中,而其他 2 个元素已经在其中。 因此,您的第三个父项最终会包含 6 个子项的列表!

在循环范围内声明您的子级列表,而不是外部范围

val DataItems = arrayListOf<faqBody>()
var ParentDataItem: faqBody
var ChildDataItem: childItem

for (item in 0..5) {
    ParentDataItem = faqBody()
    ParentDataItem.menuText = item.toString()

    val ChildDataItems = arrayListOf<childItem>() // a new list will be created for each parent       

    for (item1 in 0..2) {
        ChildDataItem = childItem()
        ChildDataItem.menuText = item1.toString()
        ChildDataItems .add(ChildDataItem)
        ParentDataItem.childItem = childlist
    }
    DataItems .add(ParentDataItem)
}

P.S.变量的名称应以小写字母开头,类/接口(interface)的名称应以大写字母开头。现代 Java/Kotlin 生产中通常遵循这种代码风格

关于java - 数据在 for 循环中的数组列表内的数组列表中重复 Recylerview Koltin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60034989/

相关文章:

android - 如何在Android中获取ObservableField的值

kotlin - 我如何在 Android Jetpack Compose 中的 Canvas 上绘制单侧加厚描边?

java - Apache Camel - 如何使用InputStream作为源?

java - Eclipse Java编译器错误

java - 使用自定义查询更新,rawQuery 或 execSQL 不起作用

c# - xamarin 中的 VPN 客户端

android - 无法在 PhoneGap Android 应用程序上显示数据 URI 图像

java - 具有所有子对象的深度复制java对象

java - Jetty_run错误java.lang.TypeNotPresentException : Type javax.annotation.meta.When不存在

java - 使用 Kotlin 在运行时添加 fragment 会导致 'Unfortunately app has stopped'