Android中——实现RecyclerView长按弹出Menu(删除)点击之后删除大解析
16lz
2021-01-26
话不多说直接上效果图:
点击删除后,该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即可!
更多相关文章
- Android通讯录开发之实现删除功能
- 能够删除的安卓(Android)系统自带程序详细列表
- Android(安卓)高仿【优酷】圆盘旋转菜单 的实现
- 從Firefox、 Google Chrome瀏覽器即時發送內容到 Android手機
- 改用 Android(安卓)之后 II
- android:同时弹出顶部和底部菜单的做法
- 蓝牙实现签到功能(中央与周边)
- Android菜单系统介绍
- Android(安卓)解决android4.0系统中菜单(Menu)添加Icon无效问题