我正在尝试执行以下操作:
我正在从服务器检索一些preferences
值,并在Toggle Button
中的ListView
中设置它。
在选择特定首选项并单击按钮时,我希望将该项目添加到arraylist中。 例如:
ITEM_ID = 1; 类别="披萨" Listview的首选项1. Xtra Cheese 2. Xtra Salt。
选择Xtra Cheese
我希望我的项目被添加到arraylist,即cart
。
在选择Xtra Cheese
和Xtra Salt
后,我又要将我的项目添加到cart
。
也就是说,我希望将具有不同偏好组合的项目仅添加到cart
一次。
我做了以下编码。请告诉我一步一步做什么。
add_list_to_cart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// String pref_name1="pref_name";
int pre_arr_len = prefern_arr1.length;
HashMap<String, String> cart_list = new HashMap<String, String>();
String qty = quantity.getText().toString();
// HashSet hs = new HashSet();
cart_list.put("quantity", "" + qty);
cart_list.put("item_id", "" + item_id_number);
cart_list.put("Category", Itemname);
cart_list.put("Details", Item_details);
cart_list.put("Price", Item_price);
cart_list.put("Currency", Item_currency);
cart_list.put("images", images);
if(pre_arr_len!=0)
{
for (int i = 0; i < pre_arr_len; i++) {
String temp = prefern_arr1[i];
if (temp != null && temp.compareToIgnoreCase("empty") != 0) {
cart_list.put(temp, temp);
if(cart.size()!=0)
{
if (cart.get(i).containsKey("item_id"))
{
if (cart.get(i).containsValue(item_id_number))
{
cart.get(i).containsValue(temp);
String pref_id = getKeyByValue(cart.get(i), temp);
//compare if the same prefernce cobinations exist
//if(yes)
//{
//don't add to cart
//}
//else
//{add to cart}
}
}
}
}
}
}
cart.add(cart_list);
public <T, E> E getKeyByValue(Map<T, E> map, E value) {
for (Entry<T, E> entry : map.entrySet()) {
if (value.equals(entry.getValue())) {
// return entry.getKey();
return entry.getValue();
}
}
return null;
}
答案 0 :(得分:1)
尝试这样的事情
ArrayList<HashMap<String, String>> test = new ArrayList<HashMap<String,String>>();
boolean exists = false;
for (HashMap<String, String> hmap : test)
{
if (hmap.get("item_id").equals("to_check_id"))
{
//exists
exists = true;
break;
}
}
if (exists)
{
//exists do something
}
修改强>
在你的情况下
boolean exists = false;
for (HashMap<String, String> hmap : cart)
{
if (hmap.get("item_id").equals(cart_list.get("item_id"))
{
//exists
exists = true;
break;
}
}
if (!exists)
{
//does not exist
//add to card
card.add(cart_list);
}
else
{
//item already exists
}