2012-04-04 76 views
0

我可以從數據庫中獲取菜單代碼,我可以在循環內打印它意味着它打印所有的菜單代碼。如果我打印環出側意味着它只能打印最後一個值如何在android中打印所有循環外的值

  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); 
     } 
    }); 

出方的迴路我也想打印所有menucodes ..請幫我

+0

你爲什麼要在循環之外打印?如果你想在該循環之外打印,你需要創建另一個循環並再次遍歷JSONArray,這將像遍歷整個相同的數組兩次,一次將值放入地圖中,第二次循環打印它。 – 2012-04-04 10:51:44

回答

1

您使用的地圖,和你有相同的密鑰所有時間("itemcode"),因此每個插入都會覆蓋之前插入的地圖,也許您應該只使用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")); 
    } 
    

最後一件事 - 你不能在地圖上擁有兩個相同的密鑰,它會破壞它的目的,而且它是無用的。如果您不打算通過按鍵獲取值,並且未使用該按鍵,則不應首先使用地圖。

+0

我不想使用清單。請如何存儲菜單代碼在字符串數組..請重播 – prakash 2012-04-04 10:53:53

+0

@prakash - 請參閱編輯 – MByD 2012-04-04 11:14:44

+0

出側循環我打印所有codes.now我比較如果(codez.equls(「1」))意味着它導航一頁其他明智導航另一個頁面。我怎麼能使用列表 – prakash 2012-04-04 11:14:54