2015-08-15 88 views
1

如何從Arraylist中填充AlertDialog。 我的ArrayList是這樣的:如何從Arraylist填充AlertDialog?

{ Brand=Weber, 
    Category=Urethane, 
    Code=Wpu-01, 
    Description=Black, 
    Quantity=5; 
    Brand=Weber, 
    Category=Urethane, 
    Code=Wpu-02, 
    Description=White, 
    Quantity=10} 

而且我想表明,在alertdialog是這樣

產品詳細信息

Weber Urethane Wpu-01 Black 5 
Weber Urethane Wpu-02 White 10 

然後一個按鈕( 「關閉」)

請幫幫我。提前致謝。

此代碼

public void updateJSONdata() { 

    orderlist = new ArrayList<HashMap<String, String>>(); 


    JSONObject json = jParser.getJSONFromUrl(PRODUCTLIST_URL); 


    try { 


     order = json.getJSONArray(GET_PRODUCT); 

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

      JSONObject c = order.getJSONObject(i); 

      String id = c.getString(GET_ID); 

      String brand = c.getString(GET_BRAND); 

      String category = c.getString(GET_CATEGORY); 

      String description = c.getString(GET_DESCRIPTION); 

      String code = c.getString(GET_CODE); 

      String quantity = c.getString(GET_QUANTITY); 

      String unit = c.getString(GET_UNIT); 

      String unitprice = c.getString(GET_UNITPRICE); 

      HashMap<String, String> map = new HashMap<String, String>(); 

      map.put(GET_ID,id); 

      map.put(GET_BRAND, brand); 

      map.put(GET_CATEGORY, category); 

      map.put(GET_DESCRIPTION, description); 

      map.put(GET_CODE, code); 

      map.put(GET_QUANTITY, quantity); 

      map.put(GET_UNIT, unit); 

      map.put(GET_UNITPRICE, unitprice); 


      orderlist.add(map); 

     } 

    } catch (JSONException e) { 

     e.printStackTrace(); 

    } 

} 
+0

我已經使用的循環,但我不能得到任何數據 – Paul

+0

INT I;對於(i = 0; i Paul

+0

@Mauker orderlist是我使用的Arraylist – Paul

回答

1

要通過ArrayListHashMap迭代,並顯示在一個AlertDialog的數據,你可以試試:

ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>(); 

StringBuilder sb = new StringBuilder(); 

for (HashMap map : list) { 
    Iterator it = map.entrySet().iterator(); 

    while (it.hasNext()) { 
     sb.append(((Map.Entry) it.next()).getValue()).append(" "); 
    } 
    sb.append("\n"); // Use this if you want a line break. 
} 

String msg = sb.toString(); 

new AlertDialog.Builder(this) 
     .setTitle("Product details") 
     .setCancelable(false) 
     .setMessage(msg) 
     .setPositiveButton("CLOSE", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       // Do something. 
       dialogInterface.dismiss(); 
      } 
     }).show(); 

這將顯示所有信息一個AlertDialog

如果你真的想顯示他們都在一個單一的線,去掉這行代碼:

sb.append("\n"); // Use this if you want a line break. 
+0

哇作品像一個魅力 – Paul

+0

如果我想展示這樣的東西 Weber聚氨酯Wpu-01黑色5 Weber聚氨酯Wpu-02白色10 – Paul

+0

你是說,沒有換行符? – Mauker

1
StringBuilder sb = new StringBuilder(); 
    for (HashMap<String,String> product:orderList){ 
     for (Map.Entry entry:product.entrySet()){ 
      sb.append(entry.getValue()).append(" "); 
     } 
    } 
String msg = sb.toString(); 
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
     builder.setTitle("Product details") 
       .setMessage(msg) 
       .setCancelable(false) 
       .setPositiveButton("CLOSE", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         dialogInterface.dismiss(); 
        } 
       }).create().show(); 
+0

Shaoib謝謝你的努力:D。我很高興你幫我 – Paul