listview长按事件 并获取选中行的值

本文介绍了如何在Android应用中为ListView设置长按事件,弹出下拉菜单,并在选择菜单项后获取所选ListView行的内容。通过创建OnCreateContextMenuListener,设置菜单标题和选项,然后在onContextItemSelected方法中获取选中行的位置和内容,展示在Toast中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            学习android作为业余兴趣,边学边做了个小应用。昨天用到了listview长按事件,弹出下拉菜单,把这作为个知识点,供以后学习用。

 

            首先,假设listview已经有数据,不管是从sqlite中获取还是程序内固定的值,下面直接给出长按事件的写法。

 

 

       activiy中:

 

          //ListView lvjzw;// listview显示列表

           lvjzw.setOnCreateContextMenuListener(lvjzwOnCreateContextMenuListener);

 

/**
  * 长按弹出下拉菜单 ,此事件中可弹出下拉框
  */
 OnCreateContextMenuListener lvjzwOnCreateContextMenuListener = new OnCreateContextMenuListener()
 {

  @Override
  public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
  {
   menu.setHeaderTitle("共享给联系人");//标题
   menu.add(0, 1, 0, "使用短信发送给好友");//下拉菜单
   // menu.add(0, 2, 0, "弹出式菜单2");
  }
 };


 /**
  * 长按菜单响应函数 并获取选中的listview行内容
  */
 @Override
 public boolean onContextItemSelected(MenuItem item)
 {

  ContextMenuInfo info = item.getMenuInfo();
  AdapterView.AdapterContextMenuInfo contextMenuInfo = (AdapterContextMenuInfo) info;
  // 获取选中行位置
  int position = contextMenuInfo.position;
  // 获取问题内容
  question = dataRecordList.get(position).getQuestion();
  Toast.makeText(JzwActivity.this,question+"===",Toast.LENGTH_SHORT).show();

/********************************到此为止,即可获取到长按那一列listview中的值*****************************************************************************************/


  // 调用手机联系人,发送短信
  Intent intent = new Intent();
    intent.setAction(Intent.ACTION_PICK);
  intent.setData(Contacts.Phones.CONTENT_URI);
    startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);
  return super.onContextItemSelected(item);
 }

 

长按某一行,弹出下拉菜单,如图

 

点击后,在Toast中显示选中内容

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值