【问题标题】:Can't use integer as an array index不能使用整数作为数组索引
【发布时间】:2017-10-20 14:52:59
【问题描述】:

我正在尝试将整数传递给异步任务并通过该索引访问列表。

但是我收到此错误“无法应用列表”。

这里是相关代码。

异步任务不接受原始 int 作为参数。

src = new ArrayList<String>();
String message = "";
for (int i=0; i<src.size(); i++) {
    new AsyncTask<Integer, Void, Void>() {
    @Override
    protected Void doInBackground(Integer... pos) {
        ...
        message += **src.get(pos)**;
        ...    
        }
    }.execute(i);
}

【问题讨论】:

    标签: java android loops asynchronous integer


    【解决方案1】:

    这是一个可变参数参数,基本上是一个Array。您必须使用索引来访问它,例如

    message += src.get(pos[0]);
    

    【讨论】:

      【解决方案2】:

      您正在传递一个可变参数,可转换为 Integer[] 作为您的 ArrayList#get 调用的参数,它不会编译 - 请参阅 List API

      您需要选择所需的可变参数元素,例如pos[0],将被拆箱为int

      【讨论】:

        【解决方案3】:

        您为从集合中获取元素而传递的参数基本上是一个数组。因此,如果您在执行 AsyncTask 时发送多个 int 值,则需要使用已传递的值的索引。在您的情况下,代码应该以这种方式访问​​索引:

        message += src.get(pos[0]);
        

        【讨论】:

          猜你喜欢
          • 2021-12-25
          • 1970-01-01
          • 1970-01-01
          • 2021-07-24
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 2013-10-28
          相关资源
          最近更新 更多