ListView中的条目长按点击事件的实现

来源:互联网 发布:编写java 用什么软件 编辑:程序博客网 时间:2024/06/05 02:06

实现步骤:

    第一步:

   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;    }
方法,也可以实现

 
阅读全文
0 0
原创粉丝点击