我正在尝试将整数传递给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);
}
答案 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]);