ListView中的条目长按点击事件的实现
2017-09-11 12:00
393 查看
实现步骤: 第一步:
registerForContextMenu(lv);//注册长按事件 (这个方法是原生的,不用自己写,lv 就是listView)
第二步:
lv.setOnItemClickListener(this);//注册并让activity 实现这个接口
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { GroupNotifyBean.DataBean dataBean = adapter.getItem(position); Intent intent =new Intent(app, AddGroupTipsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//传递bean对象,要加这个标志 intent.putExtra("dataBean",dataBean); startActivity(intent); }
第三步:
重写onCreateContextMenu方法(安卓自身的)
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { GroupNotifyBean.DataBean dataBean = (GroupNotifyBean.DataBean) lv.getItemAtPosition(((AdapterView.AdapterContextMenuInfo) menuInfo).position); getMenuInflater().inflate(R.menu.menu_mail_friend, menu); super.onCreateContextMenu(menu, v, menuInfo); }第四步:
重写onContextItemSelected方法(安卓自带的)
@Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); int index = menuInfo.position; if (item.getItemId() == R.id.action_black) {//拉黑 R.id.action_black是
// R.menu.menu_mail_friend里面的//接口请求 ToastUtil.show(mContext,"拉黑"); } return super.onContextItemSelected(item); }注意事项:
传递bean对象要加
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 并实现Serializable或者parcelable接口
否则会报下面异常
09-11 11:32:53.211 24320-24320/com.hx.socialapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.hx.socialapp, PID: 24320 android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? at android.app.ContextImpl.startActivity(ContextImpl.java:1610) at android.app.ContextImpl.startActivity(ContextImpl.java:1597) at android.content.ContextWrapper.startActivity(ContextWrapper.java:337) at com.hx.socialapp.activity.social.GroupNotifyActivity.onItemClick(GroupNotifyActivity.java:261) at android.widget.AdapterView.performItemClick(AdapterView.java:334) at android.widget.AbsListView.performItemClick(AbsListView.java:1531) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3667) at android.widget.AbsListView$3.run(AbsListView.java:5590) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5981) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)附录: 这个文件
R.menu.menu_mail_friend.xml 放到res目录下的新建的menu文件夹下!
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!--<item--> <!--android:id="@+id/action_beizhu"--> <!--android:orderInCategory="100"--> <!--android:title="备注"/>--> <item android:id="@+id/action_black" android:orderInCategory="100" android:title="拉黑"/> </menu>第二种实现方式是:
lv.setOnLongClickListener(this);
让activity实现View.OnLongClickListener 接口,重写
@Override public boolean onLongClick(View v) { return false; }方法,也可以实现
相关文章推荐
- Android中listview条目中按钮点击事件的实现
- listview条目点击事件无效(或者需要同时监听条目点击事件和子控件的点击事件)
- android ListView点击item删除事件的实现
- android中listview点击事件的监听实现
- ListView同时实现点击和长按事件
- 简单的实现listView中item多个控件以及点击事件
- 自定义CursorAdapter,实现ListView中动态加载button,和点击事件
- (Android学习之路)Android中listView结合自定义适配器,并实现item中button点击事件
- Android开发:ListView系列之item点击事件的实现及点击事件失效的解决办法
- androd中显示listview的dialog,并实现listview的点击事件
- ListView中itemz中控件的点击事件和条目点击事件冲突
- 利用RecycleView实现类似ListView的Item点击,长按等操作事件以及点击后每一项在添加一个列表
- 想实现在ListFragment里面的ListView的item里面的Button的点击事件
- 简单的实现listView中item多个控件以及点击事件
- 2种方式实现ListView中中每一项下的任意控件的点击事件
- simpleAdapter的使用和listview点击事件的简单实现
- 小白求教!listview item 含有button 点击事件怎么实现?
- Android编程实现ListView中item部分区域添加点击事件功能
- android 往dialog中加入listview,并实现listview中item的点击事件
- android 项目学习随笔十三(ListView实现ITEM点击事件)