zoukankan      html  css  js  c++  java
  • listview添加的有Headview后onItemClick函数获取的listView的行值有问题,点任何一行的数据,捕获的id值都为1,奇怪!

        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等于主键)
  • 相关阅读:
    jquery判断设备是否是手机
    jQuery -- touch事件之滑动判断(左右上下方向)
    sass制作雪碧图
    js时间字符串转为标准时间
    装箱和拆箱
    Dictionary泛型集合实现山寨版金山词霸
    泛型集合
    ArrayList集合与索引器及Hashtable
    黑马程序员--静态方法和静态类
    黑马程序员--多态练习(手机工厂)
  • 原文地址:https://www.cnblogs.com/lyyh-victory/p/3803127.html
Copyright © 2011-2022 走看看