我正在将请求发送到提供JSON响应的第三方Web服务器。该响应包含有关用户的信息。每个用户都有一个“ refid”以及有关该用户的其他一些元素。我目前正在遍历结果,并将每个用户存储到一个Hashmap中,然后将该映射添加到(ArrayList Hashmap String,String)中,然后使用此数据填充listview。现在我要做的是,当用户按下列表视图上的按钮时,它将所有refid从Arraylist中拉出,并通过AsyncTask发送到我的服务器以查找与该refid匹配的对象。

我的问题是,当refid的数量可以变化时,应该如何将refid发送给asyntask?我可以获取值和键并创建可以发送到服务器的JSONObject吗?例如{refid = 123,refid = 345,refid = 678}。 asynctask的参数是什么?
任何帮助,将不胜感激。

最佳答案

您可以执行以下操作:

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与构造函数一起传递给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);


并请给我反馈。

希望能有所帮助。

10-06 00:27