listview添加的有Headview后onItemClick函数获取的listView的行值有问题,点任何一行的数据,捕获的id值都为1,奇怪!
2014-06-22 21:56
495 查看
public void onItemClick(AdapterView<?> parent, View view, int position, long id){ TextView idTV=(TextView)findViewById(R.id.ID); String DeleteID=idTV.getText().toString(); } 解决办法: 参考网站:blog.chengbo.net/2012/03/09/onitemclick-return-wrong-position-when-listview-has-headerview.html 原因:待续
public void onItemClick(AdapterView<?> parent, View view, int position, long id){ System.out.println("Parameter position:"+position); System.out.println("Parameter id:"+id); if(id<=-1) return ; } ListView有Head时,点击Head,发现position参数为0,id为-1; I/System.out(3287): Parameter position:0 I/System.out(3287): Parameter id:-1 另外,ListView添加head后,一定要对head的onItemClick做处理,否则各种意想不到... 参数id与position的关系: id=getItemid(position); 官方文档解析:Get the row id associated with the specified position in the list. 发现这里的 row id并不是sqlite中rowid,(sqlite中rowid,如果表中有integer主键,rowid的值就等于主键); 那等于啥?等于数据库表中的_id,即getItemid(position)等于选中这行数据中的_id; 数据库中表的定义:CREATE TABLE Books (id integer primary key,author varchar(30),name varchar(30),category varchar(15), _id int); (默认情况下,SQLite会自动存在一个RowID列,从1开始,每添加一条记录+1 当设置了主键,而且主键的类型为integer时,查询RowID等于主键)
相关文章推荐
- 添加一行数据便获取id,并在存储过程中使用
- ListView 获取数据和删除一行后更新
- 向数据库中添加数据并及时获取id
- WPF 获取ListView中列添加LinkButton按钮,点击按钮的当前行的ID值
- 对多表进行添加数据(获取最后一条插入的数据的ID)
- PHP 添加数据时 同时获取ID
- mybatis实现新添加一条数据,并获取新添加数据的ID
- 安卓ListView的Item中添加按钮后,点击Button获取点击行的TextView文本数据
- THINKPHP如何在添加数据的时候获取主键id的值
- 20110215 学习记录:ASP获取新添加数据的ID号 SELECT @@IDENTITY
- C#Listview添加数据,选中最后一行,滚屏
- THINKPHP在添加数据的时候获取主键id的值方法
- c#中向ListView中添加一行数据的一种简单方法
- viewpager+handler获取网络数据无限自动轮播,xlistview添加头部viewpager,点击条目跳转百度
- android端获取网络数据添加到二级列表ExpandableListView
- Repeater中添加按钮实现点击按钮获取某一行数据的方法
- ListView 获取数据和删除一行后更新
- WPF ListView点击删除某一行并获取绑定数据
- ASP+MSSQL获取最新最后添加数据信息的ID记录值
- 【Vegas原创】GridView跨页选择多行数据,并循环添加一行DataSet数据