/** * 判断最后listView中最后一个item是否完全显示出来 * listView 是集合的那个ListView * @return true完全显示出来,否则false */ protected boolean isLastItemVisible() { final Adapter adapter1 = listView.getAdapter(); if (null == adapter || adapter.isEmpty()) { return true; } final int lastItemPosition = adapter.getCount() - 1; final int lastVisiblePosition = listView.getLastVisiblePosition(); /** * This check should really just be: lastVisiblePosition == lastItemPosition, but ListView * internally uses a FooterView which messes the positions up. For me we'll just subtract * one to account for it and rely on the inner condition which checks getBottom(). */ if (lastVisiblePosition >= lastItemPosition - 1) { final int childIndex = lastVisiblePosition - listView.getFirstVisiblePosition(); final int childCount = listView.getChildCount(); final int index = Math.min(childIndex, childCount - 1); final View lastVisibleChild = listView.getChildAt(index); if (lastVisibleChild != null) { return lastVisibleChild.getBottom() <= listView.getBottom(); } } return false; }