2016-02-04 70 views
0

我正在研究一個項目,我嘗試實現一個ASyncTask以發佈到Web服務器。將ArrayList <NameValuePair>傳遞給ASyncTask和更新值

我有我的類定義如下:

public class PostToAPI extends AsyncTask<List<NameValuePair>, Void, JSONObject> implements DialogInterface.OnCancelListener 

我有我的doInBackground方法定義如下:

protected JSONObject doInBackground(List<NameValuePair>... postData) 

我想創建一個新的ArrayList,其中將包括在POSTDATA一切加一些額外的值,但我不斷收到錯誤。

下面是我已經試過

protected JSONObject doInBackground(List<NameValuePair>... postData) 
{ 
    List<NameValuePair> updatedPostData = new ArrayList<>(); 
    updatedPostData.addAll(postData); 
updatedPostData.add(new BasicNameValuePair(Defines.PreferenceSettings.ACCESS_TOKEN, 
         settings.getString(Defines.PreferenceSettings.ACCESS_TOKEN, ""))); 
       updatedPostData.add(new BasicNameValuePair(Defines.PreferenceSettings.USER_ID, 
         String.valueOf(settings.getInt(Defines.PreferenceSettings.USER_ID, 0)))); 
} 

我在updatedPostData.addAll(postData)得到一個錯誤。錯誤是: 列表中的addAll(java.util.Collection?extends org.apache.http.NameValuePair>)無法應用於(java.util.List [])

現在,看起來像我一樣doInBackground是傳遞一個我不想要的List數組。

感謝您的幫助,您可以提供

回答

3

由於在postData只有一個元素是,只需添加一個標這樣的:

updatedPostData.addAll(postData[0]); 
-1

你的可變參數參數List<NameValuePair>... postDataList<NameValuePair>數組。

嘗試protected JSONObject doInBackground(List<NameValuePair> postData)

+0

這是行不通的,因爲'AsyncTask'需要'doInBackground()'採用可變參數。 –