我正在一个项目中尝试实现ASyncTask以发布到Web服务器。

我的班级定义如下:

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


我的doInBackground方法定义如下:

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


我正在尝试创建一个新的ArrayList<NameValuePair>,它将包括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>) in
List cannot be applied to (java.util.List<org.apache.http.NameValuePair>[])


现在对我来说好像doInBackground正在传递我不需要的List数组。

最佳答案

由于postData中只有一个元素,因此只需添加一个下标即可:

updatedPostData.addAll(postData[0]);

关于java - 将ArrayList <NameValuePair>传递给ASyncTask并更新值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35210220/

10-10 14:02