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") を使用しているため、挿入するたびにマップへの以前の挿入が上書きされます。単に を使用する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"));
    }
    

最後に - マップ内に 2 つの同一のキーを持つことはできません。これはその目的を無効にし、役に立ちません。キーで値を取得する予定がなく、キーを使用しない場合は、そもそもマップを使用しないでください。

于 2012-04-04T10:50:46.523 に答える