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的值,我们可以通过以下代码获取
(2)另外,我们可能还会用到长按菜单(上下文菜单),当我们在ListView上长按时,想获得长按的这个ListView的item的_id的值,参考下面这段代码
menu.add方法的参数:
第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。
第四个String类型的title参数,表示选项中显示的文字。
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参数,表示选项中显示的文字。
相关文章推荐
- ListView 获取选中和长按菜单对应的 item 的 _id 值
- ListView获取选中和长按菜单对应的item的_id值
- ListView获取选中和长按菜单对应的ID
- ListView获取选中和长按菜单对应的ID
- Android ListView长按事件弹出菜单并获取选中的item
- Android ListView或GridView中含有CheckBox时,获取选中的id
- C# 获取ListView中选中行中对应的列数据
- Android使listview(GridView) 获取焦点时,选中上次失去焦点时的item,而不是就近的item
- MFC CTreeView学习之右键菜单_获取选中节点的方式HitTest和GetSelectedItem的区别(二)
- android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色
- 微信小程序获取多选框选中值和选中值对应的id
- Android使listview(GridView) 获取焦点时,选中上次失去焦点时的item,而不是就近的item
- Android使listview(GridView) 获取焦点时,选中上次失去焦点时的item,而不是就近的item
- vc 多个菜单 绑定一个 方法 获取对应控件id
- Android TV 开发-listview(GridView)使用键盘获取焦点时,选中上次失去焦点时的item,而不是就近的item
- 在listView中点击其中的item。获得对应的ID或者别的信息
- Android ListView 长按如何获取item的主键并操作对应数据库元组
- ListView重新获取焦点时,让其重新选中上次被选的item,而不是就近选择
- TabLayout新闻列表和SlidingMenu侧拉菜单ListView点击Item跳转到主界面ViewPager对应页面
- android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色