我正在一个项目中尝试实现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/