ListView获取选中和长按菜单对应的item的_id值

首先,如果是用simpleCursorAdapter填充ListView的数据时,必须注意SQLite的主键命名,由于simpleCursorAdapter的方法只识别_id,所以,当你用到SQLite的simpleCursorAdapter时,必须把数据表的主键命名为_id。否则就会出现java.lang.IllegalArgumentException: column '_id' does not exist错误


(1)言归正传,当我们点击ListView时,会调用ListView的点击事件,那么点击的这个item的对应的数据库的_id的值,我们可以通过以下代码获取

[java]  view plain copy
  1. //添加点击    
  2. listView.setOnItemClickListener(new OnItemClickListener() {    
  3.   
  4.     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {    
  5.           
  6.         //setTitle("点击第"+arg2+"个项目");   
  7.         String mytitle = null;  
  8.         String mycontent = null;  
  9.           
  10.         switch(arg0.getId())  
  11.         {  
  12.         case R.id.ListView01:  
  13.             ListView templist = (ListView)arg0;  
  14.             View mView = templist.getChildAt(arg2);  
  15.             mytextview = (TextView) mView.findViewById(R.id.ItemTitle);  
  16.             mytitle = mytextview.getText().toString();  
  17.               
  18.             mysqlhelper.db = mysqlhelper.mOpenHelper.getReadableDatabase();   
  19.             Cursor cur=mysqlhelper.db.rawQuery("select Content from Table_1 where Title = ?",new String[]{mytitle});  
  20.             int count=cur.getCount();  
  21.             cur.moveToFirst();  
  22.             mycontent=cur.getString(0);  
  23.               
  24.             cur.close();  
  25.             mysqlhelper.db.close();  
  26.               
  27.             Intent intent = new Intent(view_Activity.this, modify_Activity.class);    
  28.             intent.putExtra("Title",mytitle);  
  29.             intent.putExtra("Content",mycontent);  
  30.             startActivityForResult(intent, SUBACTIVITY2);  
  31.             break;  
  32.         }  
  33.     }    
  34. });    
  35.     
  36. //添加长按点击    
  37. listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {    
  38.         
  39.     public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {    
  40.         menu.setHeaderTitle("确定删除?");       
  41.         menu.add(000"OK");    
  42.         menu.add(010"Cancel");       
  43.     }    
  44. });   

(2)另外,我们可能还会用到长按菜单(上下文菜单),当我们在ListView上长按时,想获得长按的这个ListViewitem_id的值,参考下面这段代码

[java]  view plain copy
  1.        //长按菜单响应函数    
  2. @Override  
  3. public boolean onContextItemSelected(MenuItem item) {  
  4.     // TODO Auto-generated method stub  
  5.     ContextMenuInfo menuInfo = (ContextMenuInfo) item.getMenuInfo();       
  6.        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();   
  7.        int id = (int)info.id;//这里的info.id对应的就是数据库中_id的值  
  8.          
  9.     switch(item.getItemId())  
  10.     {  
  11.     case 0:  
  12.         ListView templist = listView;  
  13.         View mView = templist.getChildAt(id);  
  14.         mytextview = (TextView) mView.findViewById(R.id.ItemTitle);  
  15.         String title1 = mytextview.getText().toString();  
  16.         //setTitle("点击了长按菜单里面的第"+title1+"个项目");   
  17.         mysqlhelper.DeleteItem(title1); //删除这条记录  
  18.           
  19.         break;  
  20.     case 1:  
  21.         break;  
  22.     }  
  23.     return super.onContextItemSelected(item);  
  24. }  


menu.add方法的参数:
    
第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。

第四个String类型的title参数,表示选项中显示的文字。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值