实现SwipeMenuListView特定item的右滑menu无效
来源:互联网 发布:mysql还原数据库 编辑:程序博客网 时间:2024/05/01 22:42
项目中增加需求:
根据不同来源的数据,修改展示页面及响应。
对于之前的数据来源,定为“来源一”
新的特殊数据来源,定为“来源二”
一、对SwipeMenuListView的研究及修改
通过之前转的关于SwipeMenuListView源码的解析 及自己对源码的阅读,发现数据展示页面右滑出现的menu的样式的修改可以通过adapter的viewtype来处理。
而,取消删除按钮的响应,可以简单的为SwipeMenu类增加一个boolean类型的变量isDisabled。如果是来源二的数据,就调用set方法将该变量设置为true。这样,在MenuItem的监听中增加判断即可。而set方法的调用,我选择再MenuItem的creator中来做。
代码:
1、adapter中增加viewtype
public static final int viewtype_normaldata = 0,viewtype_erpdata = 1;
@Overridepublic int getViewTypeCount() { // menu type count return 2;}@Overridepublic int getItemViewType(int position) { // current menu type return myList.get(position).containsKey("is_erp")?viewtype_erpdata:viewtype_normaldata;}
注意:viewtype的值必须在0~getViewTypeCount()-1 之间。
2、新的creator
SwipeMenuCreator creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { switch (menu.getViewType()){ case SwipeMenuListViewAdapter.viewtype_normaldata: // create "delete" item SwipeMenuItem deleteItem = new SwipeMenuItem( getApplicationContext()); // set item background deleteItem.setBackground(new ColorDrawable(Color.rgb(0xFF, 0x63, 0x63))); // set item width deleteItem.setWidth(dp2px(90)); // set a icon deleteItem.setTitle("删除"); deleteItem.setTitleSize(18); deleteItem.setTitleColor(Color.parseColor("#FFFFFF")); // deleteItem.setIcon(R.drawable.ic_delete); // add to menu menu.addMenuItem(deleteItem); break; case SwipeMenuListViewAdapter.viewtype_erpdata: // create "delete" item SwipeMenuItem deleteItem_erp = new SwipeMenuItem( getApplicationContext()); // set item background deleteItem_erp.setBackground(new ColorDrawable(Color.rgb(0xDD, 0xDD, 0xDD))); // set item width deleteItem_erp.setWidth(dp2px(90)); // set a icon deleteItem_erp.setTitle("删除"); deleteItem_erp.setTitleSize(18); deleteItem_erp.setTitleColor(Color.parseColor("#FFFFFF")); // deleteItem.setIcon(R.drawable.ic_delete); // add to menu menu.addMenuItem(deleteItem_erp); menu.setIsDisabled(true); break; } }};
3、Item的监听是在SwipeMenuListView的setAdapter中添加的
@Overridepublic void setAdapter(ListAdapter adapter) { super.setAdapter(new SwipeMenuAdapter(getContext(), adapter) { @Override public void createMenu(SwipeMenu menu) { if (mMenuCreator != null) { mMenuCreator.create(menu);//创建好这个SwipeMenu } } @Override public void onItemClick(SwipeMenuView view, SwipeMenu menu, int index) { if ((mOnMenuItemClickListener != null)&&(!menu.getIsDisabled())) { mOnMenuItemClickListener.onMenuItemClick( view.getPosition(), menu, index); } if (mTouchView != null) { mTouchView.smoothCloseMenu(); } } });}
如果要根据不同的MenuItem做不同的响应,就在真正的
mOnMenuItemClickListener
中根据menu.getViewType()
在switch中分别处理一下就可以了。
mListView.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public void onMenuItemClick(int position, SwipeMenu menu, int index) { switch (menu.getViewType()){ case SwipeMenuListViewAdapter.viewtype_normaldata: break; case SwipeMenuListViewAdapter.viewtype_erpdata: Intent intent = new Intent(mContext, DialogDelStudentActivity.class); String idJSON = mAdapter.getList().get(position).get("id") .toString(); intent.putExtra("idJSON", idJSON); intent.putExtra("type", "delStudent"); startActivityForResult(intent, 1); break; } }});
0 0
- 实现SwipeMenuListView特定item的右滑menu无效
- Android 实现ListView item的左滑(右滑)监听事件 swipemenulistview
- 自己实现一个右滑删除的ListView, SwipeMenuListView
- 仿QQ侧滑删除Item:Swipemenulistview的简单实现
- 仿QQ侧滑删除Item:Swipemenulistview的简单实现
- 关于SwipeMenuListView的侧滑menu的内容修改
- Android 4.3 menu item showAsAction=“always”无效的解决办法
- Android功能之第三方SwipeMenuListView,Item项的侧滑
- 关于在toolbar 的menu中控件或者menu的item做动画的实现
- 使用swipemenulistview实现列表的左右滑动
- 使用swipemenulistview实现列表的左右滑动
- 使用swipemenulistview实现列表的左右滑动
- SwipeMenuListView实现QQ侧滑选项
- SwipeMenuListView实现点击和侧滑删除
- SwipeMenuListView,一个简单的左滑操作
- 侧滑删除 SwipeMenuListView的使用
- 利用第三方开源框架 SwipeMenuListView 实现用户的左右侧滑事件
- ListView侧滑删除的实现,利用SwipemenuListView开源框架
- 广东海洋大学 电子1151 孔yanfei python语言程序设计 第八周
- xcode打包的几种方式
- 基于PHP SLIM 框架搭建 RESTful 风格API 示例
- Xcode 依赖管理带来的静态库动态库分析
- 第十一周上机实践——警察和厨师(2)(补)
- 实现SwipeMenuListView特定item的右滑menu无效
- zynq 音乐播放流程
- mac 命令
- android.support.v4.app.Fragment$InstantiationException问题解决
- 广东海洋大学 电子1151 孔yanfei python语言程序设计 第九周
- This application's application-identifier entitlement does not match that of the installed applicati
- Ubuntu下pdf阅读器
- kafka
- 【网络编程4】Java多线程