Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin arrayList-can';Don’不要重写这个名单_Android_Arraylist_Collections_Kotlin - Fatal编程技术网

Android Kotlin arrayList-can';Don’不要重写这个名单

Android Kotlin arrayList-can';Don’不要重写这个名单,android,arraylist,collections,kotlin,Android,Arraylist,Collections,Kotlin,我使用一个名为ItemHolder的类来保存列表中的一些对象。我添加了一些。在某一点上,我需要清除项目(所有项目)以添加新项目。当我试图从列表中获取一个项目时,我会得到IndexOutOfBoundException FATAL EXCEPTION: main Process: studio.monk.rq, PID: 2812

我使用一个名为ItemHolder的类来保存列表中的一些对象。我添加了一些。在某一点上,我需要清除项目(所有项目)以添加新项目。当我试图从列表中获取一个项目时,我会得到IndexOutOfBoundException

FATAL EXCEPTION: main
                                                                   Process: studio.monk.rq, PID: 2812
                                                                   java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
                                                                       at java.util.ArrayList.get(ArrayList.java:411)
                                                                       at studio.monk.rq.common.ItemHolder.getItem(ItemHolder.kt:9)
                                                                       at studio.monk.rq.fragments.MainFragment$onCreateView$vpPageChangeListener$1.onPageSelected(MainFragment.kt:44)
                                                                       at studio.monk.rq.fragments.MainFragment$onCreateView$1.run(MainFragment.kt:51)
                                                                       at android.os.Handler.handleCallback(Handler.java:751)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
以下是我使用的代码:

内部物品持有人

    var itemList : ArrayList<Item> = arrayListOf()
后来在同一节课上:

itemHolder.itemList.add(position, database.getRandomData())
以及:

问题是,当我第一次使用该类时,它运行良好,但第二次抛出异常

FATAL EXCEPTION: main
                                                                   Process: studio.monk.rq, PID: 2812
                                                                   java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
                                                                       at java.util.ArrayList.get(ArrayList.java:411)
                                                                       at studio.monk.rq.common.ItemHolder.getItem(ItemHolder.kt:9)
                                                                       at studio.monk.rq.fragments.MainFragment$onCreateView$vpPageChangeListener$1.onPageSelected(MainFragment.kt:44)
                                                                       at studio.monk.rq.fragments.MainFragment$onCreateView$1.run(MainFragment.kt:51)
                                                                       at android.os.Handler.handleCallback(Handler.java:751)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

不能使用arrayListOf定义新列表

使用
ArrayList()
,因为
arrayListOf()
仅在希望使用现有值初始化列表并设置所提供项目的大小时使用。在您的例子中,它初始化一个大小为0的列表

这意味着这是正确的方法:

var itemList = ArrayList<Item>()
var itemList=ArrayList()
你也可以使用

var itemList = mutableListOf<Item>() 
var itemList=mutableListOf()

这与使用
ArrayList()
完全相同,应该使用,因为Kotlin以后可能会更改实现。

Kotlin列表是不可变的。使用
mutableListOf
@RachitMishra它与此无关,这只是JavaHmm中的一个标准ArrayList!是的,我的错!“你能发布例外情况吗?”拉希特·米什拉补充道。我还检查了日志,add方法出现在get之前,所以idk为什么它不会添加items这是关于代码的执行顺序。只知道几行代码是无法调试的。若您真的想使用不推荐使用的固定索引,您可能需要在ArrayList上使用HashMap。除LinkedList外,列表不具有固定索引。最好使用HashMap并消除在Android中不起作用的OutofboundException。Hashmap技术也不起作用。它不会得到更新。我需要一些其他的想法。我正在尝试使用ArrayList填充GridView。还尝试了HashMap,甚至不更新单个值。
var itemList = mutableListOf<Item>()