Android 实现RecyclerView长按弹出Menu 点击删除

话不多说直接上效果图:
在这里插入图片描述
点击删除后,该item移除
在这里插入图片描述

在实现这个功能之前,一定要先参考,因为我们需要制作menu菜单 这个删除的视图,链接为:
删除Menu 的制作

参考完之后,就是要来实现这个功能弹出的 menu删除功能了:

第一步,我们现在我们的 Adapter 适配器中添加 监听接口:

    private OnItemClickListener onItemClickListener;
    public interface OnItemClickListener{
        void onItemLongClick(View view , int pos);
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

第二步:
再在 onBindViewHolder 中添加长按 item 时响应逻辑:

if(onItemClickListener!=null) {
            viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    onItemClickListener.onItemLongClick(viewHolder.itemView,i);
                    return false;
                }
            });
        }

这样配合之前我们在Fragment中写过的:

  adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemLongClick(final View view, final int pos) {
                PopupMenu popupMenu = new PopupMenu(getContext(),view);
                popupMenu.getMenuInflater().inflate(R.menu.menu_item,popupMenu.getMenu());

                //弹出式菜单的菜单项点击事件
                popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                            list.remove(pos);	//	删除
                            adapter.notifyItemRemoved(pos);
                            textView = view.findViewById(R.id.tv_time);
                            str = textView.getText().toString().trim();     //  得到这个item的时间值
                            deleteSqlList();    //  根据时间值删除数据库中的值
                        return false;
                    }
                });
                popupMenu.show();
            }
        });

就可以实现删除功能,不过问题问题来了,这里的删除仅仅只是删除了界面的item,并未真正的达到删除的目的,也就是说当我们关闭程序,再次打开时,该item仍然是存在的,那么要实现真正删除的话,我们就只需要进入到数据库中,删除掉这个item即可!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王睿丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值