Android中ListView使用addHeaderView和addFooterView注意事项

Android中ListView的addHeaderView和addFooterView使用问题

设定ListView的adapter条数为5,即adapter.getCount() = 5

单独使用addHeaderView(View v, Object data, boolean isSelectable)
isSelectable = true时,adapter.getCount()=5,itemClick事件中,点击头部取时position为0,原本不加header时position为0的条目,此时为1,点击最后一条时,position为5,报数组越界错误。即在使用addHeaderView的情况下,所有原有条目的ponsition都加1.
isSelectable = false时,结果与上述结果相同,唯一不同之处在于,点击header时,itemClick事件不会响应。

使用n个addHeaderView(View v, Object data, boolean isSelectable)
adapter.getCount()的结果不变,itemClick事件position的位置改变成position+n,其他与上述相同

单独使用addFooterView(View v, Object data, boolean isSelectable)
isSelectable = true时,adapter.getCount()=5,itemClick事件中,原有数据的点击事件不受影响,点击footer时,position=5,报数组越界错误。
isSelectable = false时,结果与上述结果相同,唯一不同之处在于,点击footer时,itemClick事件不会响应。

使用n个addFooterView(View v, Object data, boolean isSelectable)
点击所有footer都报数组越界错误,其他与上述相同。

解决方法
1、一般header和footer都是跟listview内容有区别的,不使用itemClick事件,而是用onClick作为监听。
2、如果只加了footer,itemClick不用做其他处理,如果加了header则在处理事件中,把position减1.
还有一种方式:

@Override
public void onItemClick(AdapterView<?> parentView, View v, int position, long id) {
           //此时获取的数量是adapter原本的数量加上header和footer的数量
            parentView.getAdapter().getCount();
            parentView.getAdapter().getItem(position);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值