不能使用整数作为数组索引

时间:2017-10-20 14:53:00

标签: java android loops asynchronous integer

我正在尝试将整数传递给Async任务,并使用该索引访问列表。

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

以下是相关代码。

Async任务不接受原始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);
}

3 个答案:

答案 0 :(得分:2)

您正在传递一个varargs,可翻译成Integer[]作为ArrayList#get调用的参数,该调用无法编译 - 请参阅List API

您需要选择所需的varargs元素,例如: pos[0],将取消装箱到int

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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