Android ListView 点击按钮删除对应的 item

今天遇到一个点击item 中按钮删除对应的item的需求,那么问题来了,按钮在Adapter 视图中,按理说点击事件如果在Adapter中实现的话会无法调用自身listView 刷新数据源的方法,好了不多说了,先上效果:


其实我的实现方法就是把删除按钮的点击事件放在对应的Activity中实现,那么问题又来了,我们怎么知道点击的是哪个item中的按钮?后来我发现一个神奇的东西 tag ,有这东西做标识当然就知道点击的是哪个item中的按钮了,item的按钮是这样的:

   //设置回调监听
            activityAllCategory. shopping_lv_delete.setOnClickListener(onDelItem);
            activityAllCategory.shopping_lv_delete.setTag(position);

            activityAllCategory.jia = (Button) convertView.findViewById(R.id.jia);
            //设置回调监听
            activityAllCategory. jia.setOnClickListener(addCount);
            activityAllCategory.jia.setTag(position);
            activityAllCategory.jian = (Button) convertView.findViewById(R.id.jian);
            //设置回调监听
            activityAllCategory. jian.setOnClickListener(jianCount);
            activityAllCategory.jian.setTag(position);
            convertView.setTag(activityAllCategory);
    /**
     *定义监听接口
     */
    public void setOnDelItem(View.OnClickListener onDelItem) {
        this.onDelItem = onDelItem;
    }
    public void add(View.OnClickListener addCount) {
        this.addCount = addCount;
    }
    public void jian(View.OnClickListener jianCount) {
        this.jianCount = jianCount;
    }

对应的Activity 中的代码是这样的:

  adapter = new MyCarAdapter(getContext(), mylist);
                        adapter.setOnDelItem(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                showInfo(Integer.parseInt(v.getTag()+""));
                            }
                        });
                        adapter.add(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {

                                int amount = mylist.get((Integer) v.getTag()).getAmount();
                                amount++;
                                mylist.get((Integer) v.getTag()).setAmount(amount);
                                adapter.notifyDataSetChanged();
                            }
                        });
                        adapter.jian(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                int amount = mylist.get((Integer) v.getTag()).getAmount();
                                if(amount>=2){
                                    amount--;
                                    mylist.get((Integer) v.getTag()).setAmount(amount);
                                    adapter.notifyDataSetChanged();
                                }else{
                                    Toast.makeText(getActivity(), "购物车中只有一个商品,不欲购买可以点击删除!", Toast.LENGTH_SHORT).show();
                                }

                            }
                        });

这样就OK了,有不懂得地方可以给我留言哦~

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值