protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
}参数中的position和id都可以用来取得某一item,一个表示位置,一个表示row ID,那么这两者有什么区别呢,为什么要两个参数都传呢?

解决方案 »

  1.   

    举个例子你会理解的更快:X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item。
    如果你点了b这个item。如下:public void onItemClick (AdapterView<?> parent, View view, int position, long id )// parent 相当于listview Y适配器的一个指针,可以通过它来获得Y里装着的一切东西,再通俗点就是说告诉你,你点的是Y,不是X - -
    // view 是你点b item的view的句柄,就是你可以用这个view,来获得b里的控件的id后操作控件
    // position 是b在Y适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,意思就是这个b是第position号做好的)
    // id 是b在listview Y里的第几行的位置(很明显是第2行),大部分时候position和id的值是一样的,如果需要的话
      

  2.   


    其实我就是想知道既然position和id是一样的 为什么还要两个参数都传呢
      

  3.   

    我也在研究这个问题我发现:在最简单的情况下,也就是你通过ArrayAdapter生成的ListView,position和id就是一样的但是通过Cursor生成的ListView就不是这样了position还是表示条目所在的行的位置,从0开始计,第0行position值就是0,第一行position值就是1但id要看_id字段,貌似id的值就是_id的值以上是我学到目前为止的结论,我继续研究一下,看能不能把它彻底搞懂