`
sinye
  • 浏览: 217493 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

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

 

public class RoadPickList extends Activity{
	private static final String TAG = "RoadPickList";
	private ListView lv;
	private int id;
	public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
        	setContentView(R.layout.roadpicklist);
        	lv = (ListView)findViewById(R.id.listview);
       	 /**
        	 * 添加点击
      	   */
      	  lv.setOnItemClickListener(new ListView.OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				id = (int) arg3;//这里的这个arg3对应的就是数据库中_id的值
			}   
  
        	});  
}

 

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

 

/**
* 长按菜单的响应
*/
public boolean onContextItemSelected(MenuItem aItem) {     
         ContextMenuInfo menuInfo = (ContextMenuInfo) aItem.getMenuInfo();     
         AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)aItem.getMenuInfo(); 
         id = (int)info.id;//这里的info.id对应的就是数据库中_id的值
      return true; 
} 

 

4
2
分享到:
评论
2 楼 564065574 2011-12-09  
请问楼主,数据库的id与listview的id有什么关系吗?我觉得好像没什么必然的联系吧,
1 楼 zingsky 2011-09-26  
如果数据库中的_id被删除掉了某一个部分应该如何操作呢

相关推荐

Global site tag (gtag.js) - Google Analytics