package jianshu.io.app.widget; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.AbsListView; import it.gmariotti.cardslib.library.internal.CardArrayAdapter; import it.gmariotti.cardslib.library.view.CardListView; /** * Created by Administrator on 2014/5/11. */ public class EndlessCardListView extends CardListView implements AbsListView.OnScrollListener{ private boolean isLoading; private EndlessListener listener; private View footer; public EndlessCardListView(Context context) { super(context); init(); } public EndlessCardListView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public EndlessCardListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } private void init() { this.setOnScrollListener(this); } @Override public void onScrollStateChanged(AbsListView absListView, int i) { } @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(getAdapter() == null) { return; } if(getAdapter().getCount() == 0) { return; } int l = visibleItemCount + firstVisibleItem; if(l >= totalItemCount && !isLoading && !this.listener.isAtTheEnd()) { this.addFooterView(this.footer); this.isLoading = true; this.listener.onScrollEnd(); } } public void setFooter(View view) { this.footer = view; } public void setListener(EndlessListener listener) { this.listener = listener; } public void notifyNewDataLoaded() { this.removeFooterView(this.footer); this.isLoading = false; } @Override public void setAdapter(CardArrayAdapter adapter) { this.addFooterView(this.footer); super.setAdapter(adapter); this.removeFooterView(this.footer); } }