您的位置:首页 > 其它

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

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: