Android之LoadMoreListView
来源:互联网 发布:2017观潮网络空间论坛 编辑:程序博客网 时间:2024/06/14 04:06
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
/** * Android load more ListView when scroll down. * * @author Charon Chui */public class LoadMoreListView extends ListView {protected static final String TAG = "LoadMoreListView";private View mFooterView;private OnScrollListener mOnScrollListener;private OnLoadMoreListener mOnLoadMoreListener;/** * If is loading now. */private boolean mIsLoading;private int mCurrentScrollState;public LoadMoreListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init(context);}public LoadMoreListView(Context context, AttributeSet attrs) {super(context, attrs);init(context);}public LoadMoreListView(Context context) {super(context);init(context);}private void init(Context context) {mFooterView = View.inflate(context, R.layout.load_more_footer, null);addFooterView(mFooterView);hideFooterView();/* * Must use super.setOnScrollListener() here to avoid override when call * this view's setOnScrollListener method */super.setOnScrollListener(superOnScrollListener);}/** * Hide the load more view(footer view) */private void hideFooterView() {mFooterView.setVisibility(View.GONE);}/** * Show load more view */private void showFooterView() {mFooterView.setVisibility(View.VISIBLE);}@Overridepublic void setOnScrollListener(OnScrollListener l) {mOnScrollListener = l;}/** * Set load more listener, usually you should get more data here. * * @param listener * OnLoadMoreListener * @see OnLoadMoreListener */public void setOnLoadMoreListener(OnLoadMoreListener listener) {mOnLoadMoreListener = listener;}/** * When complete load more data, you must use this method to hide the footer * view, if not the footer view will be shown all the time. */public void onLoadMoreComplete() {mIsLoading = false;hideFooterView();}private OnScrollListener superOnScrollListener = new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {mCurrentScrollState = scrollState;// Avoid override when use setOnScrollListenerif (mOnScrollListener != null) {mOnScrollListener.onScrollStateChanged(view, scrollState);}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if (mOnScrollListener != null) {mOnScrollListener.onScroll(view, firstVisibleItem,visibleItemCount, totalItemCount);}// The count of footer view will be add to visibleItemCount also are// added to totalItemCountif (visibleItemCount == totalItemCount) {// If all the item can not fill screen, we should make the// footer view invisible.hideFooterView();} else if (!mIsLoading&& (firstVisibleItem + visibleItemCount >= totalItemCount)&& mCurrentScrollState != SCROLL_STATE_IDLE) {showFooterView();mIsLoading = true;if (mOnLoadMoreListener != null) {mOnLoadMoreListener.onLoadMore();}}}};/** * Interface for load more */public interface OnLoadMoreListener {/** * Load more data. */void onLoadMore();}`
load_more_footer.xml
12345678910111213141516171819202122232425
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" > <ProgressBar android:id="@+id/load_more_pb" style="@android:style/Widget.ProgressBar.Small" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" /> <TextView android:id="@+id/load_more_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="5dp" android:paddingTop="5dp" android:text="正在加载..." tools:ignore="HardcodedText" /></LinearLayout>
调用
1234567
mListView.setOnLoadMoreListener(new OnLoadMoreListener() {@Overridepublic void onLoadMore() {}});
0 0
- Android之LoadMoreListView
- LoadMoreListView
- 自定义LoadMoreListView
- LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构
- Android之 Android 虚拟机
- Android之 Android 虚拟机
- Android之android:launchMode
- Android之android:launchMode
- Android之android:launchMode
- Android之android:launchMode
- Android 之 Android Studio
- 【Android】Android之创建活动
- 【Android】Android之intent
- android之android-autofittextview
- android 学习之---Android之GoogleMap(转)
- android高手之路之Android Widget
- Android学习之路之Android基本知识
- android之ArrayAdaper之Spinner
- 异构医院信息系统(HIS)更换时数据迁移的方法
- poj 1062 dijkstra求最短路变形
- linux中替换所有文件名称和文件内容特定字符命令
- 在windows下运行Hadoop程序的环境配置
- 微信公众帐号开发教程第17篇-应用实例之智能翻译
- Android之LoadMoreListView
- 2016SDAU课程练习四1008 Problem H
- iOS开发-第一个App
- C#桌面办公应用-工资管理系统系列六
- Android开源特效最全合集
- 微信公众帐号开发教程第18篇-应用实例之音乐搜索
- 2016SDAU课程练习四1009 Problem I
- Golang的包依赖管理 (package dependency manager)
- Holistically-Nested Edge Detection