将HashMap传递给AsyncTask并将其转换为JSONObject

时间:2014-02-03 03:50:11

标签: android json arraylist android-asynctask hashmap

我正在向提供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的参数? 任何帮助,将不胜感激。

1 个答案:

答案 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);

请给我反馈意见。

希望有所帮助。