热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

listview添加的有Headview后onItemClick函数获取的listView的行值有问题,点任何一行的数据,捕获的id值都为1,奇怪!...

publicvoidonItemClick(AdapterViewparent,Viewview,intposition,longid){TextViewidTV(TextV

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:"&#43;position);System.out.println("Parameter id:"&#43;id);if(id<&#61;-1) return ;
    }
ListView有Head时&#xff0c;点击Head&#xff0c;发现position参数为0&#xff0c;id为-1&#xff1b;
 I/System.out(3287): Parameter position:0
 I/System.out(3287): Parameter id:-1
另外&#xff0c;ListView添加head后&#xff0c;一定要对head的onItemClick做处理&#xff0c;否则各种意想不到...

参数id与position的关系&#xff1a;
id&#61;getItemid(position);
官方文档解析&#xff1a;Get the row id associated with the specified position in the list.
发现这里的 row id并不是sqlite中rowid&#xff0c;&#xff08;sqlite中rowid&#xff0c;如果表中有integer主键&#xff0c;rowid的值就等于主键&#xff09;&#xff1b;
那等于啥&#xff1f;等于数据库表中的_id&#xff0c;即getItemid(position)等于选中这行数据中的_id;
数据库中表的定义&#xff1a;CREATE TABLE Books (id integer  primary key,author varchar(30),name varchar(30),category varchar(15), _id int);

(默认情况下&#xff0c;SQLite会自动存在一个RowID列&#xff0c;从1开始&#xff0c;每添加一条记录&#43;1 当设置了主键&#xff0c;而且主键的类型为integer时&#xff0c;查询RowID等于主键)

 

转:https://www.cnblogs.com/lyyh-victory/p/3803127.html



推荐阅读
author-avatar
许雅惠嘉文意芝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有