【问题标题】:Erorr when using ArrayList (initalCapacity)使用 ArrayList 时出错(初始容量)
【发布时间】:2021-01-14 13:43:08
【问题描述】:

我有一个adapter 类,我在其中initialise 映射如下:

internal class MyAdapter(private var itemList: List<Items>) :
        RecyclerView.Adapter<MyAdapter.MyViewHolder>() {

    private var itemStates: MutableMap<Int, ArrayList<Boolean>> = mutableMapOf()

    init {
        itemList.forEachIndexed { index, itemObject->

            val capacity  = if(itemObject.getItemTYPE() == Item.ITEM_TYPE.FOOD) 3 else 5

            itemStates[index] = ArrayList(initialCapacity = capacity) //error is shown here
        }
    }

其他一切似乎都很好,但是当我运行它时,我收到以下错误:

以下函数都不能使用提供的参数调用:

public final fun(): kotlin.collections.ArrayList /* = java.util.ArrayList */ 定义在 kotlin.collections.ArrayList

公共最终乐趣 (p0: (MutableCollection..Collection?)): kotlin.collections.ArrayList /* = java.util.ArrayList */ 定义在 kotlin.collections.ArrayList

公共最终乐趣(p0:Int): kotlin.collections.ArrayList /* = java.util.ArrayList */ 定义在 kotlin.collections.ArrayList

任何帮助或建议将不胜感激。

【问题讨论】:

  • 请更新您的问题以显示完整错误消息。
  • @Thomas 我已经更新了
  • 您必须在此处输入一些常量值。它不会使用动态初始化

标签: android kotlin arraylist


【解决方案1】:

正如您在错误消息中看到的,该参数被命名为p0 而不是initialCapacity。这可能是因为ArrayList 是直接从Java 导入的(参见= java.util.ArrayList 部分),而在Java 中,参数名称不是函数签名的一部分。您的编译器引用的 JAR 可能已经优化了名称。另见this question

与其写ArrayList(p0 = capacity),不如写ArrayList(capacity),这样你就不再依赖参数名称了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-22
    • 2016-07-13
    • 2012-08-08
    • 2023-01-25
    • 1970-01-01
    • 2015-05-29
    • 2013-03-04
    相关资源
    最近更新 更多