为RecyclerView添加ContextMenu

2024-01-27 21:08
文章标签 recyclerview contextmenu

本文主要是介绍为RecyclerView添加ContextMenu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里要实现的是RecyclerView的item的长按事件与Menu关联
先看看要写的效果:
这里写图片描述

1、在res下新建menu目录,在menu目录下新建recyclerview_menu.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><item
        android:id="@+id/item_add"android:title="添加"android:orderInCategory="1"app:showAsAction="never"/><item
        android:id="@+id/item_modify"android:title="修改"android:orderInCategory="2"app:showAsAction="never"/><item
        android:id="@+id/item_delete"android:title="删除"android:orderInCategory="3"app:showAsAction="never"/><item
        android:id="@+id/item_more"android:title="更多"android:orderInCategory="4"app:showAsAction="never"/>
</menu>

2、关键代码:

public class DrawerLayoutActivity extends AppCompatActivity {private Bomb[] mBombArray = {new Bomb("bomb5", R.drawable.bomb5), new Bomb("bomb6", R.drawable.bomb6), new Bomb("bomb7", R.drawable.bomb7),new Bomb("bomb8", R.drawable.bomb8), new Bomb("bomb9", R.drawable.bomb9), new Bomb("bomb10", R.drawable.bomb10),new Bomb("bomb11", R.drawable.bomb11), new Bomb("bomb12", R.drawable.bomb12), new Bomb("bomb13", R.drawable.bomb13),new Bomb("bomb14", R.drawable.bomb14), new Bomb("bomb15", R.drawable.bomb15), new Bomb("bomb16", R.drawable.bomb16)};private List<Bomb> mBombList = new ArrayList<>();private CommonAdapter<Bomb> mAdapter;private RecyclerView mRecyclerView;private int mSelectPosition;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_drawer_layout);initRecyclerView();}private void initRecyclerView() {mAdapter = new CommonAdapter<Bomb>(this,R.layout.item,mBombList) {@Overrideprotected void convert(ViewHolder holder, Bomb bomb, final int position) {holder.setText(R.id.tv,bomb.name);//holder.setImageResource(R.id.iv,bomb.imgId);ImageView iv = (ImageView) holder.getConvertView().findViewById(R.id.iv);Glide.with(DrawerLayoutActivity.this).load(bomb.imgId).into(iv);//长按事件holder.getConvertView().setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {mSelectPosition = position;return false;}});}};mRecyclerView = (RecyclerView) findViewById(R.id.revyvlerview);mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));mRecyclerView.setAdapter(mAdapter);//为RecyclerView注册ContextMenuregisterForContextMenu(mRecyclerView);}/*** 以下与 RecyclerView 的 menu 相关*/@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.recyclerview_menu,menu);}@Overridepublic boolean onContextItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.item_add:Toast.makeText(this, "add", Toast.LENGTH_SHORT).show();return true;case R.id.item_modify:Toast.makeText(this, "modify", Toast.LENGTH_SHORT).show();return true;case R.id.item_delete:Toast.makeText(this, "delete", Toast.LENGTH_SHORT).show();mBombList.remove(mSelectPosition);mAdapter.notifyDataSetChanged();return true;case R.id.item_more:Toast.makeText(this, "more", Toast.LENGTH_SHORT).show();return true;default:return super.onContextItemSelected(item);}}
}

这篇关于为RecyclerView添加ContextMenu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651492

相关文章

RecyclerView的itemView的点击效果

1,需要在 itemView 的布局 根节点上添加  android:clickable="true" 2、或者通过代码实现 @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {  ((ViewHolder)viewHolder).textView

ScrollView嵌套RecyclerView再嵌套RecyclerView导致的布局展示不完整问题

背景:页面布局,最外层有个ScrollView,然后里面有个RecyclerView,然后每个RecyclerView的item都是一个RecyclerView 异常:页面展示不完整,最底下的Item 展示一半,在往上滑就滑不动了   解决: // 每一个item渲染完后重新计算外层recyclerview高度// 因为外层的recyclerview是先渲染的,渲染时 内部recyc

【项目FJU】使用SwipeRefreshLayout+RecyclerView制作下拉刷新上拉加载更多

效果截图 https://github.com/ydslib/Jianshu/tree/develop 需要用到的知识 setColorSchemeResources:设置下拉刷新进度条的颜色setOnRefreshListener:设置下拉刷新监听android:overScrollMode:设置滑动到边缘时无效果模式ContentLoadingProgressBar:内容加载进度条,继承

ListView和RecyclerView比较

1.ViewHolder 作用: View复用 Listview: 自己定义 RecyclerView: RecyclerView.ViewHolder则变成了必须 2.LayoutManager 作用: 布局管理器 Listview: 官方推荐只做垂直滚动功能 RecyclerView: LinearLayoutManager,可以支持水平和竖直方向上滚动的列表。 S

关于contextmenu-ui组件库

关于这个组件库把,主要用在个人博客制作中,而且由于作者很懒,已经一个多月没有更新了,甚至第二次更新都忘了修改md文件了。 这个组件库是使用vue3和TS来写的,关于引用,看这里 都有介绍的,直接使用即可。 而这些组件好多都是需要动态展示,感兴趣的话可以直接使用瞅一下 后续大概可能也会继续更新,组件可能更趋向于个人博客使用,当然,也会包含一些没啥用的组件。 其中封装的好多组件通过观看源代码

RecyclerView和CardView的使用以及注意

转载请注明出处 作者:AboutJoke ( http://blog.csdn.net/u013200308 ) 原文链接:http://blog.csdn.net/u013200308/article/details/51244289 距离RecyclerView和CardView的出现已经很久了,网上也有很多关于这方面的博客。因为最近自己在项目中用到了Material Design设计规

解决ScrollView 嵌套RecyclerView出现的问题

ScrollView 嵌套RecyclerView会使RecyclerView列表显示不全,很多人都把ScrollView替换成NestedScrollView,或者重写RecyclerView。 其实使用ScrollView并且不用重写RecyclerView也是可以实现的,那就是在RecyclerView外面再嵌套一层布局就可以了。像下面这样: <ScrollViewand

使用RecyclerView实现item拖拽变换位置重新排序

小知识解决大问题,问题处理+经验分享,大家好,我是时代新人!今天给大家分享一个小例子,请往下看: 今天用RecyclerView实现一个拖拽交换位置,和编辑删除的功能。先来个效果图看一下 1、定义一个ItemTouchHelperAdapter接口 import androidx.recyclerview.widget.RecyclerView;/*** Created by WJY.*

解决RecyclerView条数显示不全问题

小知识解决大问题,问题处理+经验分享,大家好,我是时代新人!今天给大家分享一条小经验,请往下看: 多个RecyclerView同时使用的时候,比如线性垂直排布三个RecyclerView,那么会出现一个问题就是第一个RecyclerView的数据条数显示不全,只能显示一屏的内容,比如有10条数据,一屏只能显示5条,那么第一个RecyclerView就只显示5条数据,然后就显示下一个Recycle

ScrollView嵌套RecyclerView 问题

在滑动的时候,拦截ScrollView的Touch事件: 自定ScrollView: package com.ejamad.information.ui.widget;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import androi