ListView的setOnItemClickListener位置错乱问题

ListView的setOnItemClickListener位置错乱问题

如果你对一个ListView同时addHeaderView(listhHeaderView),也就是头部视图,再加setAdapter,当你加上setOnItemClickListener事件后你会发现setAdapter所对应的位置(position)和setOnItemClickListener所对应的位置不一样,实际上是因为setOnItemClickListener算addHeaderView的为第一个item,而adapter不算,所以setOnItemClickListener所点击的是下一个的Item,解决方法是setOnItemClickListener里面那个position参数-1,示例代码:

messageListView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position,
            long id) {
        // TODO Auto-generated method stub
        position = position - 1;
        
        doSomething();
        
    }
});

这应该算是缺陷。