【问题标题】:How to remove a value from a ArrayList<HashMap<String,String>> and from a ListView row in android?如何从 ArrayList<HashMap<String,String>> 和 Android 中的 ListView 行中删除值?
【发布时间】:2014-09-06 18:33:28
【问题描述】:

我使用SimpleAdapter 生成了ListView。我的 ListView 的每一行都有一个名为 remove 的按钮。当我单击remove 按钮时,我想删除或删除在该行以及items (类型为Arraylist&lt;Hashmap&lt;String,String&gt;&gt;)中设置的项目。我已经完成了以下编码,但它没有t help. 谁能指导我一步一步怎么做?我的代码如下:

     //here items is of the type  ArrayList<HashMap<String,String>>


 ListAdapter k = new SimpleAdapter(cart_activity.this, items,
                                        R.layout.cart_list_view_items, new String[] {"Category","Details","quantity","images","Currency","Price","item_id"}, new int[] { R.id.cat_name_cart,
                                        R.id.cart_details,R.id.cart_qty,R.id.image_url,R.id.cart_currency,R.id.cart_price,R.id.cart_item_id}) {

            @Override
            public View getView(final int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                final View v = super.getView(position, convertView, parent);
                Log.i("arraylist position in cart activity and position",""+items.get(position).get("item_id")+"  "+position);
                Button remove=(Button)v.findViewById(R.id.remove);

remove.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        items.remove(position);
                    }
                });

    return v;
            }

        };

        salad_list.setAdapter(k);

【问题讨论】:

    标签: android android-listview arraylist hashmap simpleadapter


    【解决方案1】:

    试试这个..

    1)ArrayList 中删除.clear(),因为它会清除ArrayList 中的所有详细信息

    2) 然后添加notifyDataSetChanged(),它将刷新您的ListView

    items.remove(position);
    k.notifyDataSetChanged();
    

    【讨论】:

    • 该行被删除但该值仍然存在于我的 Arraylist> 即我猜 items.remove(position) 不会从 Arraylist
    • @Ann 你是否对OnCreate()getView() 使用相同的ArrayList
    • 是的,我在oncreate() 中从另一个activity 获得ArrayList,并在getview() 中使用相同的数组列表
    • @Ann 必须删除。你如何检查ArrayList 没有删除该项目
    • 我记录了它,它被删除了..对不起我的错误......谢谢它现在工作
    【解决方案2】:

    点击删除按钮时:

    items.remove(position);
    k.notifyDataSetChanged();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2011-12-31
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      相关资源
      最近更新 更多