Android хранит данные массива в мультикарте, используя тот же ключ - PullRequest
1 голос
/ 21 января 2012

Привет, друзья! Я застрял в этой проблеме на последнем этапе моей программы. Вот описание моего проекта: я звоню в веб-службу с помощью Ksoap и получаю ответ JSON от сервера, чем япроанализировал этот ответ и сохранил его в соответствующем массиве. Пока все работает нормально. Теперь проблема начинается здесь. Я хочу сохранить все эти 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.HowМогу ли я достичь этого?

Ответы [ 3 ]

1 голос
/ 21 января 2012

Я бы просто определил класс контейнера AppData для хранения всех данных, относящихся к одному ответу, а затем просто поместил бы AppData объекты в вашу мультикарту.

0 голосов
/ 21 января 2012

Не очень хороший подход - иметь в ответ все эти разные списки для разных полей, но так как вы реализовали его почти завершенным, я бы привел этот подход дальше:

Вы можете использовать карту в карте, чтобыразрешите эту проблему:

Все, что вам нужно, выполните следующий цикл:

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);
 }
0 голосов
/ 21 января 2012

По этой ссылке ( Java Map Interface ) ищите multimap, что дает прямую реализацию мультикарты.

Однако из того, что я понимаю по вашему вопросу, вынужно поместить все свои списки в List, и это войдет в MultiMap (который будет просто HashMap<String,ArrayList<ArrayList>>).

...