我正在向提供JSON响应的第三方Web服务器发送请求。响应包含有关用户的信息。每个用户都有一个“refid”和一些关于用户的其他元素。我目前迭代结果并将每个用户存储到Hashmap中,然后将地图添加到(ArrayList Hashmap String,String)I,而不是使用此数据填充listview。现在我想要做的是,当用户按下listview上的按钮时,它会从Arraylist中提取所有refid并通过AsyncTask发送到我的服务器以查找与refid匹配的内容。
我的问题是,当补给数量变化时,我应该如何将refid发送到asyntask?我可以获取值和键并创建一个JSONObject,我可以将其发送到我的服务器吗?例如{refid = 123,refid = 345,refid = 678}。什么是asynctask的参数? 任何帮助,将不胜感激。
答案 0 :(得分:1)
您可以执行以下操作:
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
Hashmap<String , String> map = yourArrayList.get(position);
MyAsyncTask task = new MyAsyncTask(map);
task.execute()
}
});
这里我根据点击的位置从你的ArrayList获取hashmap;
我用构造函数将hashMap传递给AsyncTask,然后执行Asynctask,如下所示:
public class MyAsyncTask extends AsyncTask <Void,Void,Void> {
private Hashmap<String , String> map ;
public MyAsyncTask (HashMap<String,String> m ){
this.map = m ;
}
…
}
在您的asynctask中,您可以将HashMap转换为JSONObject:
public JSONObject(java.util.Map map)
JSONObject构造函数将Map作为参数,并从Map构造一个JSONObject,如下所示:
JSONObject obj=new JSONObject(yourmap);
请给我反馈意见。
希望有所帮助。