0

我可以从数据库中获取菜单代码,我可以在 for 循环中打印意味着它会打印所有菜单代码。如果我打印循环侧意味着它只打印最后一个值

         my code
     JSONArray json = jArray.getJSONArray("mainmenu");

         for ( i = 0; i < json.length(); i++) {

                JSONObject e = json.getJSONObject(i);
            map.put("itemcode", e.getString("menucode"));   //here i print all values  


         }
      list.setOnItemClickListener(new OnItemClickListener() {   

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            System.out.println(map.get("itemcode"));//here i print only last value(here i want print all values how can i do this)
            // TODO Auto-generated method stub
            Intent intent=new Intent(getApplicationContext(),FoodMenu.class);
            startActivity(intent);
        }
    });

在循环之外我也想打印所有菜单代码..请帮助我

4

1 回答 1

1

您正在使用地图,并且始终拥有相同的键("itemcode"),因此每次插入都会覆盖先前对地图的插入,也许您应该只使用 a List,或者使用不同的键。

通过举例回答评论:

  1. 使用ArrayList/ List

    List<String> codez = new ArrayList<String>();
    for ( i = 0; i < json.length(); i++) {
        JSONObject e = json.getJSONObject(i);
        codez.add(e.getString("menucode"));
    }
    
  2. 使用不同的键:

    for ( i = 0; i < json.length(); i++) {
        JSONObject e = json.getJSONObject(i);
        map.put("itemcode" + i, e.getString("menucode"));
    }
    

最后一件事 - 你不能在一个地图中有两个相同的键,它违背了它的目的,它是无用的。如果您不打算通过键获取值,并且如果未使用键,则首先不应使用映射。

于 2012-04-04T10:50:46.523 回答