Android使用相同的密钥将arraylist数据存储到multimap中

时间:2012-01-21 08:34:23

标签: android arraylist multimap

大家好朋友,我在程序的最后阶段遇到了这些问题。这是关于我的项目的一些描述:我在Ksoap的帮助下调用Web服务并从服务器获取JSON响应,我是解析了这个响应并将其存储到对应的arraylist.Till这里一切正常。现在问题从这里开始我想将所有这些AppID,AppName,AppTabID,Icon,Tabname存储到具有相同索引的相同键的多图中。如何我能做到吗?任何帮助都会受到高度赞赏!

private SoapPrimitive response;
ArrayList<String> AppID = new ArrayList<String>();
ArrayList<String> AppName = new ArrayList<String>();
ArrayList<String> AppTabId = new ArrayList<String>();
ArrayList<String> Icon = new ArrayList<String>();
ArrayList<Drawable> drawables=new ArrayList<Drawable>();
ArrayList<String> TabName = new ArrayList<String>();

<!--here are  the Arraylist declaration->

public String parse(String a) throws Exception { 

    JSONArray jsonArry1    = new JSONArray(res);     // create a json object from a string
    // JSONArray  jsonEvents = jsonObj.optJSONArray("AppItems"); // get all events as json objects from AppItems array
    System.out.println("Length of array for AppItem tag is.. "+jsonArry1.length());

    for(int i = 0; i < jsonArry1.length(); i++){
        JSONObject event = jsonArry1.getJSONObject(i); // create a single event jsonObject

        String AppID=event.getString("AppId");
        System.out.println("AppId is "+AppID);

        String AppName=event.getString("AppName");
        System.out.println("AppName is "+AppName);

        String AppTabId=event.getString("AppTabId");
        System.out.println("AppTabId is "+AppTabId);

        String Icon=event.getString("Icon");
        System.out.println("Icon is "+Icon);

        TabHtml=event.getString("TabHtml");
        System.out.println("TabHtml = "+TabHtml);
    }
    System.out.println("return"+TabHtml);
    return TabHtml;
}

上面的代码用于将所有内容保存到arraylist对象。从这里我想将所有这些不同的Arraylist设置为相同的MultiMap。我能实现吗?

3 个答案:

答案 0 :(得分:1)

我只是定义一个AppData容器类来保存与单个响应相关的所有数据,然后只将AppData个对象放入多图中。

答案 1 :(得分:0)

在此链接(Java Map Interface)上搜索multimap,可以直接实现多地图。

但是,根据我对您的问题的理解,您必须将所有列表放入List,这将进入MultiMap(这只是HashMap<String,ArrayList<ArrayList>> )。

答案 2 :(得分:0)

将不同字段的所有这些不同列表作为响应,这不是一个很好的方法,但是当你已经实现了几乎完成时,我会进一步引导这种方法:

您可以使用地图到地图来解决此问题:

您需要遵循以下循环:

HashMap<Integer, HashMap<String, String> parsed=new HashMap<Integer, HashMap<String, String>();
for(int i=0;i<AppID.size();i++)
{
    HashMap<String, String> keyValues= new HashMap<String, String>();
    keyValues.put("id", AppName .get(0));
    keyValues.put("id", AppTabId .get(0));
    keyValues.put("id", Icon .get(0));

    .....
    parsed(new Integer(i), keyValues);
 }