如何将hashmap与相同的密钥及其值组合起来?

时间:2016-09-12 17:59:04

标签: android

我将一些json数据填充到我的listview中,我将它存储在Hashmap中,然后将其添加到arraylist中,但我遇到了一些问题。

我的代码:

 try{
    final String result = response.body().string();
    JSONObject jsonObject = new JSONObject(result);
    String data = jsonObject.getString("data");
    JSONArray foodintervalarray = new JSONArray(data);
    for (int j = 0; j < foodintervalarray.length(); j++) {
        JSONObject jsonObject1 = foodintervalarray.getJSONObject(j);
        final String food_interval = 
        jsonObject1.getString(FOOD_INTERVAL);
        Log.i("food_interval ", "food_interval " + food_interval);
        String item_name = jsonObject1.getString(ITEM_NAME);
        Log.i("item_name ", "item_name " + item_name);
        final HashMap<String, String> menuMap = new HashMap<String, 
        String>();
        menuMap.put(FOOD_INTERVAL, food_interval);
        menuMap.put(ITEM_NAME, item_name);

        runOnUiThread(new Runnable() {
        @Override
        public void run() {
            foodintervallist.add(menuMap);
            ListViewAdapter listViewAdapter = new 
            ListViewAdapter(Diet_Order_Activity_New.this,
            foodintervallist);
            listView.setAdapter(listViewAdapter);                  
            listViewAdapter.notifyDataSetChanged();
          }
      });
}

这里发布的是我的LogCat:

food_interval: food_interval Breakfast
item_name: item_name Brown Bread
food_interval: food_interval Breakfast
item_name: item_name  Butter 
food_interval: food_interval Breakfast
item_name: item_name Papaya
food_interval: food_interval Breakfast
item_name: item_name Milk
food_interval: food_interval 10 A. M
item_name: item_name rice
food_interval: food_interval 11.30 Soup
item_name: item_name tomato soup
food_interval: food_interval Lunch
food_interval: food_interval Lunch
food_interval: food_interval 3.30 PM

///////////////当前列表查看结果/////////////

Breakfast            Brown Bread
Breakfast            Butter
Breakfast            Papaya
Lunch                Paneer
Lunch                Roti

////////////我希望我的列表视图看起来如何///////////////

Breakfast   Brown Bread,Butter ,Paneer
Lunch       Paneer,Roti

将一个类型的food_interval放在一列中,并将其项目与逗号组合 例如,不是在一列中显示早餐5次而且其项目也在另一列中单独显示,我应该有一份早餐和黑面包,黄油,木瓜作为其项目的组合 午餐合为一体及其项目合并

但是,我分别在早餐中获得5次早餐,并将其项目分别列入其他栏目

如何实现以上目标?,请帮忙

由于

2 个答案:

答案 0 :(得分:0)

我建议使用自定义类来存储数据。 创建这个类:

return os.stat(filename).st_mtime
    TypeError: argument should be string, bytes or integer, not list

使用此代码代替

  public class MyStorage {
    public String name = "";
    public ArrayList<String> food = new ArrayList<String>();
    public MyStorage (String name, String food) {
    this.name  = name;
    this.food = food;
    }
        public appendIfSameName(String name, String new_food) {
    boolean appended = false;
    if (this.name.isEqual(name)) {
    ar.add(food);
    appended  = true;
    }
    return appended ;
    }
    }

答案 1 :(得分:0)

首先,获取:

runOnUiThread(new Runnable() {
...
});

出于for循环。

您还需要更改:

menuMap.put(FOOD_INTERVAL, food_interval);<br>
menuMap.put(ITEM_NAME, item_name);

你需要在这里添加一些逻辑来检查food_interval是否已经作为地图中的哈希存在 如果没有,请使用上面的put调用 如果是,则“获取”地图值,使用逗号将项目名称添加到字符串并“放置”新字符串。新的put将取代旧值。

我会把代码留给你作为练习。

晚安,祝你好运