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();
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;
}