2017-10-20 259 views
-1

我想將整數傳遞給異步任務,並通過該索引訪問列表。不能使用整數作爲數組索引

但是我得到這個錯誤「在列表不能應用」。

這裏是相關的代碼。

異步任務不接受原始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); 
} 

回答

2

你傳遞一個可變參數,翻譯成Integer[]作爲參數爲您ArrayList#get調用,這將無法編譯 - 見ListAPI

您需要選擇所需的可變參數元素,例如, pos[0],將其拆箱到int

2

這是一個可變參數,它基本上是一個Array。您必須通過索引訪問它,例如

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

您傳遞來從集合中獲取元素的參數基本上是一個數組。因此,如果您在執行AsyncTask時發送多個int值,則需要使用已傳遞的值的索引。在你的情況下,代碼應該以這種方式訪問​​索引:

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