您的位置:首页 > 其它

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

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

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

//添加点击  
        listView.setOnItemClickListener(new OnItemClickListener() {  
  
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {  
            	
                //setTitle("点击第"+arg2+"个项目"); 
                String mytitle = null;
                String mycontent = null;
                
                switch(arg0.getId())
                {
                case R.id.ListView01:
                	ListView templist = (ListView)arg0;
                	View mView = templist.getChildAt(arg2);
                	mytextview = (TextView) mView.findViewById(R.id.ItemTitle);
                	mytitle = mytextview.getText().toString();
                	
                	mysqlhelper.db = mysqlhelper.mOpenHelper.getReadableDatabase(); 
                	Cursor cur=mysqlhelper.db.rawQuery("select Content from Table_1 where Title = ?",new String[]{mytitle});
                	int count=cur.getCount();
                	cur.moveToFirst();
                	mycontent=cur.getString(0);
                	
                	cur.close();
                	mysqlhelper.db.close();
                	
                	Intent intent = new Intent(view_Activity.this, modify_Activity.class);  
                	intent.putExtra("Title",mytitle);
                	intent.putExtra("Content",mycontent);
                	startActivityForResult(intent, SUBACTIVITY2);
                	break;
                }
            }  
        });  
          
        //添加长按点击  
        listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {  
              
            public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
                menu.setHeaderTitle("确定删除?");     
                menu.add(0, 0, 0, "OK");  
                menu.add(0, 1, 0, "Cancel");     
            }  
        });


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

//长按菜单响应函数  
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		ContextMenuInfo menuInfo = (ContextMenuInfo) item.getMenuInfo();     
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
        int id = (int)info.id;//这里的info.id对应的就是数据库中_id的值
        
		switch(item.getItemId())
		{
		case 0:
			ListView templist = listView;
        	View mView = templist.getChildAt(id);
        	mytextview = (TextView) mView.findViewById(R.id.ItemTitle);
        	String title1 = mytextview.getText().toString();
        	//setTitle("点击了长按菜单里面的第"+title1+"个项目"); 
        	mysqlhelper.DeleteItem(title1); //删除这条记录
        	
			break;
		case 1:
			break;
		}
		return super.onContextItemSelected(item);
	}


menu.add方法的参数:



第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。

第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。

第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。

第四个String类型的title参数,表示选项中显示的文字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐