为RecyclerView添加ContextMenu
来源:互联网 发布:诸葛武侯巧连神数 算法 编辑:程序博客网 时间:2024/05/29 08:57
这里要实现的是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; @Override protected 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) { @Override protected 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() { @Override public boolean onLongClick(View v) { mSelectPosition = position; return false; } }); } }; mRecyclerView = (RecyclerView) findViewById(R.id.revyvlerview); mRecyclerView.setLayoutManager(new GridLayoutManager(this,2)); mRecyclerView.setAdapter(mAdapter); //为RecyclerView注册ContextMenu registerForContextMenu(mRecyclerView); } /** * 以下与 RecyclerView 的 menu 相关 */ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.recyclerview_menu,menu); } @Override public 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); } }}
阅读全文
0 0
- 为RecyclerView添加ContextMenu
- 为RecycleView添加ContextMenu支持
- 为工程添加上下文菜单(ContextMenu)
- 为 RecyclerView 添加 OnItemClickListener
- 为recyclerview添加悬浮view
- 为RecyclerView添加分隔线
- 为RecyclerView添加分割线
- 简洁大方,为自己的Android App添加一个ContextMenu
- 在RecyclerView当中使用 contextMenu
- RecyclerView系列之(2):为RecyclerView添加分隔线
- RecyclerView系列之(2):为RecyclerView添加分隔线
- Android RecyclerView (三)初学,为RecyclerView添加Item点击监听。
- RecyclerView系列之(2):为RecyclerView添加分隔线
- RecyclerView系列之(2):为RecyclerView添加分隔线
- RecyclerView系列之(2):为RecyclerView添加分隔线
- RecyclerView系列之(2):为RecyclerView添加分隔线
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 线程不安全的实体Bean
- 使用JPA中@Query 注解实现update 操作
- IntelliJ IDEA Maven报错
- spring boot 返回的json中去掉值为null的属性
- codeforces 237-C. Primes on Interval(尺取)
- 为RecyclerView添加ContextMenu
- 修改windows远程桌面端口
- app html5 上拉加载分页
- 《linux设备驱动程序》第3章总结
- SSM(四)WebService入门详解
- Error:Could not find com.android.tools.build:gradle:2.2.2.
- Two Sum IV
- Hibernate学习笔记—Hibernate4.3环境搭建
- linux下无法挂载ntfs硬盘解决方法