2013-12-12 77 views
2

一個字符串值,我有一個HashMap,將我選擇的項目的一排從其他的HashMap每次得到的數據。在數據存儲到散列表之前,我已經在arraylist中進行了檢查。此檢查是檢查數組是否存在於數組列表中。如果是,我想更改數組中存在的itemID的數量值。目前,問題是數量從未更新或改變。更新在HashMap中

我知道這是不是做的最好辦法,但可以在任何幫助我解決這個問題呢?提前致謝。

這是我的代碼目前

private void listOrder(String itemValue, String itemID) 
{ 
    HashMap<String, String> map = new HashMap<String, String>(); 

    String quantity = "1"; 

    map.put(FOODID3, itemID); 
    map.put(FOODNAME3, itemValue); 
    map.put(FOODQUANTITY3, quantity); 

    boolean found = false; 

    if (!LIST3.isEmpty()) 
    { 
     for (int i = 0; i < LIST3.size(); i++) 
     { 
      String exists = null; 
      exists = LIST3.get(i).get(FOODID3).toString(); 

      if (exists.equals(itemID)) 
      { 
       found=true; 
       String b = map.get(FOODQUANTITY3); 
       int quantityy = Integer.parseInt(b) +1; 
       String c = Integer.toString(quantityy); 
       System.out.println(c); 
       map.put(FOODQUANTITY3, c); // I can't update the value here 
       break; 
      } 
     } 
    }    

    if (!found) 
    { 
     LIST3.add(map); 
    } 

    LISTORDER = (ListView) findViewById(R.id.listOrder); 

    List3Adapter adapter = new List3Adapter(MainActivity.this, LIST3); 
    LISTORDER.setAdapter(adapter); 
} 
+0

價值究竟是什麼'LIST3'? – Savv

+0

它的我想列表 –

+0

@SavTheCoder對不起,沒有提到它很清楚,LIST3是ArrayList > LIST3; – user3040029

回答

3

的問題是,如果關鍵是找到要更新您創建的新地圖,沒有存儲在項目list3 。

嘗試下面的代碼,將工作:

private void listOrder(String itemValue, String itemID) 
{ 
    HashMap<String, String> map = new HashMap<String, String>(); 

    String quantity = "1"; 

    map.put(FOODID3, itemID); 
    map.put(FOODNAME3, itemValue); 
    map.put(FOODQUANTITY3, quantity); 

    boolean found = false; 

    if (!LIST3.isEmpty()) 
    { 
     for (int i = 0; i < LIST3.size(); i++) 
     { 
      String exists = null; 
      exists = LIST3.get(i).get(FOODID3).toString(); 

      if (exists.equals(itemID)) 
      { 
       found=true; 
       String b = LIST3.get(i).get(FOODQUANTITY3); 
       int quantityy = Integer.parseInt(b) +1; 
       String c = Integer.toString(quantityy); 
       System.out.println(c); 
       LIST3.get(i).put(FOODQUANTITY3, c); // I can't update the value here 
       break; 
      } 
     } 
    }    

    if (!found) 
    { 
     LIST3.add(map); 
    } 

    LISTORDER = (ListView) findViewById(R.id.listOrder); 

    List3Adapter adapter = new List3Adapter(MainActivity.this, LIST3); 
    LISTORDER.setAdapter(adapter); 
} 
+0

謝謝!它的工作。 – user3040029

+0

@vipul mittal ::好一個兄弟..我會投這個我喜歡它 –

1
System.out.println("start"); 
HashMap<String,String> a1 = new HashMap<String, String>(); 
a1.put("a1", "true"); 
a1.put("a1", "true2"); 
System.out.println("final value is ==" + a1.get("a1")); 

我這樣做,我得到true2所以沒有概率更換或HashMap覆蓋值,只是做了一些破發點,並檢查我認爲錯誤是一些其他地方可能是你想要輸入的價值,也可能是空值檢查一次。

可能是,如果(exists.equals(ITEMID))始終是假的只是調試一次

+0

@ R.J所以你認爲if(exists.equals(itemID))有什麼問題? – user3040029

+0

感謝您的測試 – user3040029

+0

@ user3040029 - 我想是的。控制檯中是否打印了'c'的值? – SudoRahul

0

只需更換這樣

int position; 

map.get(position).put("String");