package com.buddycloud.fragments; import android.support.v4.widget.SwipeRefreshLayout; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ListView; public class EndlessScrollListener implements OnScrollListener { private static final int VISIBLE_THRESHOLD = 10; private boolean loading; private boolean refreshing; private ChannelStreamFragment fragment; private int mLastFirstVisibleItem; public EndlessScrollListener(ChannelStreamFragment fragment) { this.fragment = fragment; } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { boolean loadMore = firstVisibleItem + visibleItemCount + VISIBLE_THRESHOLD >= totalItemCount; if (loadMore && !loading && !refreshing) { fragment.fillMore(); } // enable/disable pull-to-refresh SwipeRefreshLayout refreshLayout = fragment.getSwipeRefreshLayout(); if (firstVisibleItem == 0 && refreshLayout != null) { refreshLayout.setEnabled(true); } else { refreshLayout.setEnabled(false); } // show/hide post "+" button final ListView lw = fragment.getPostStreamView(); if (view.getId() == lw.getId()) { final int currentFirstVisibleItem = lw.getFirstVisiblePosition(); if (currentFirstVisibleItem > mLastFirstVisibleItem) { fragment.hideAddPostTopicBtn(); } else if (currentFirstVisibleItem < mLastFirstVisibleItem) { fragment.showAddPostTopicBtn(); } mLastFirstVisibleItem = currentFirstVisibleItem; } } public void setLoading(boolean loading) { this.loading = loading; } public void setRefreshing(boolean refreshing) { this.refreshing = refreshing; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } }