首先addHeaderView必须得在setAdapter之前被调用。
在OnItemClickListener的public void onItemClick(AdapterView<?> parent, View view, int position,long id) 方法中,position是从header开始计算的包括了header的数量。要获得除去header后的正确位置应该怎么做呢?
方法1,position减去 listView.getHeaderViewsCount().例如我想得到listview中可视的第一条item的在数据中索引,就用getFirstVisiblePosition()- getHeaderViewsCount();
方法2,在onItemClick不要直接使用我们声明的adapter,而是用ListView里的那个decorated adapter。获取它的方法就是调用parent.getAdapter()
http://blog.csdn.net/faithmy509/article/details/11521903
如果 listview 调用了一次 addHeaderView,则
listView.getFirstVisiblePosition();
listView.getLastVisiblePosition();
listView.getChildAt(pos);
会以 headerView 为第0个view,item 的 pos会从1开始。