2016-02-25 150 views
0

我正在使用ArrayList<HashMap<String, String>>来存储我的购物车物品。每次将商品添加到购物车时,商品详情设置为ArrayList,然后调用setCart()方法。将ArrayList <HashMap <String,String >>附加到另一个ArrayList <HashMap <String,String >>

我想如果ArrayList项目已经通过调用setCart()它不会覆盖以前的车items.Instead它追加ArrayList已经存在的ArrayList的末尾,则存在。我用ArrayList.add()方法,但它仅适用于HashMap<String,String>不工作的呼吁addtocart按钮ArrayList<HashMap<String, String>>

public class AddtoCart extends Application { 
    ArrayList<HashMap<String, String>> cart; 

    public void setCart(ArrayList<HashMap<String, String>> data) { 
    cart = data; 
    } 

    public ArrayList<HashMap<String, String>> getCart() { 
    return cart; 
    } 

    public int getSize() { 
    return cart.size(); 
    } 
} 

方法,在AddtoCart

private OnClickListener Cart = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     cart = new ArrayList<HashMap<String, String>>(); 
     HashMap<String, String> map = new HashMap<String, String>(); 
      map.put(TAG_PID, pid); 
      map.put(TAG_NAME, name); 
      map.put(TAG_CATEGORY, category); 
      map.put(TAG_PRICE, price); 
      map.put(TAG_IMAGE,String.valueOf(resId)); 
      cart.add(map); 

      AddtoCart obj = (AddtoCart) getApplicationContext(); 
      obj.setCart(cart); 

     Intent a = new Intent("com.example.pb.VIEWCART"); 
     startActivity(a); 
    } 
}; 

}

+0

关注一下吧'ArrayList.addAll' – Blackbelt

+0

当你想更新你可以使用.SET,给你想要更新索引一个ArrayList和新的对象 – Joh

回答

0

更新设置ArrayList您像这样的方法

public void setCart(ArrayList<HashMap<String, String>> data) { 
    if(cart != null && cart.size() > 0) 
     cart.addAll(data); 
    else 
     cart = data; 
} 

或者,如果你申报你的ArrayList这样

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

您可以删除if-else条件,只是做cart.addAll(data);

+1

第一种情况不起作用,除非变量被初始化 - 它会给NPE。 –

+0

@AndyTurner感谢您指出。 – Rohit5k2

1


我对你的建议。
我们必须设计CartItem类而不是HashMap,以便将来的更改更容易。 如果您想在后期添加任何与标签相关的新属性,我们可以将这些属性添加到CartItem类中。这将有助于在您的代码中实现模块化对象。
例子:

public class CartItems 
{ 

    int tagPid; 
    String tagCategoy; 
    int price 
    String tagImage; 

    // getters and setters methods of above attributes 
} 


public class AddtoCart extends Application { 
ArrayList<CartItems> cart; 

//remaining code 
} 
相关问题