【问题标题】:Passing HashMap to AsyncTask and convert it to JSONObject将 HashMap 传递给 AsyncTask 并将其转换为 JSONObject
【发布时间】:2014-02-26 11:13:10
【问题描述】:

我正在向提供 JSON 响应的第 3 方网络服务器发送请求。响应包含有关用户的信息。每个用户都有一个“refid”和一些关于用户的其他元素。我目前遍历结果并将每个用户存储到 Hashmap 中,然后将地图添加到 (ArrayList Hashmap String,String) 中,然后用这些数据填充列表视图。现在我想做的是,当用户按下列表视图上的按钮时,它会从 Arraylist 中提取所有 refid 并通过 AsyncTask 发送到我的服务器以查找与 refid 的匹配项。

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

【问题讨论】:

    标签: android json arraylist android-asynctask hashmap


    【解决方案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 传递给 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);
    

    请给我反馈。

    希望对您有所帮助。

    【讨论】:

    • 感谢您的快速响应。我可以获取该地图并使用 JSONParser 将其转换为 JSONobject 吗?
    • 是的,您可以将此地图转换为 JSONObject。
    • 我不知道如何将地图转换为对象。我习惯使用 JSONParser (URL, List params) 我会将字符串值添加为参数,但这对我来说是不同的。你能帮我进一步吗?
    • 检查我更新的答案 JSONObject 构造函数采用 HashMap 并将其转换为 JSONObject
    猜你喜欢
    • 1970-01-01
    • 2020-06-11
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多