int firstPosition = lisView.getFirstVisiblePosition(); int lastPosition = lisView.getLastVisiblePosition(); int childCount = lisView.getChildCount(); boolean delResult = lv_list.removeHeaderView(header);
以上三行代码是listView的三个方法
我一直疑惑这三个方法的返回值的含义是什么,和Adapter的关系,现在用举例来解释:
listView的adapter返回的getCount = 100;
listView中第一个可见的item为2,最后一个为13
那么 :
firstPosition = 2;
lastPosition = 13;
childCount = 12;
此时给这个ListView添加 2 个Header
依然把listView滚动到第一个可见的item为2,最后一个为12
那么此时:
firstPosition = 4;
lastPosition = 15;
childCount = 12;
childCount返回的永远是当前屏幕显示的View个数,如果Header被滑动上去,那么这个Count中就没有Header的总数
且:
只有当HeaderView可见时,才会被删除,delResult才会为true。
由此可见,这三个方法不是针对Adapter中的View,而是针对包含Header在内的所有View的值。切记!