2017-10-20 14 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

あなたはコンパイルされませんあなたのArrayList#get呼び出しのための引数としてInteger[]に翻訳、可変引数を渡している - を参照してListAPI

varargsの要素を選択する必要があります。 pos[0]であり、intにアンボックスされます。

2

基本的には、可変パラメータです。Arrayです。たとえばインデックスなどでアクセスする必要があります。

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

要素をコレクションから取得するために渡すパラメーターは基本的に配列です。したがって、AsyncTaskの実行中に複数のint値を送信する場合は、渡した値のインデックスを使用する必要があります。あなたの場合、コードは次のようにインデックスにアクセスする必要があります:

message += src.get(pos[0]); 
関連する問題