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的值。切记!