自动加载更多的listView
来源:互联网 发布:js中的unicode编码表 编辑:程序博客网 时间:2024/06/06 01:18
package com.supermap.testdemo;import android.content.Context;import android.util.AttributeSet;import android.view.Gravity;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.ProgressBar;import android.widget.TextView;/** * Created by Administrator on 2017/6/9 0009. */public class LoadMoreListView extends ListView implements AbsListView.OnScrollListener { private LinearLayout footerView; private int totalCount; private int lastVisibleCount; private boolean isLoading = false; private ILoadMoreListener iLoadMoreListener; public LoadMoreListView(Context context) { super(context); initView(context); } public LoadMoreListView(Context context, AttributeSet attrs) { super(context, attrs); initView(context); } public LoadMoreListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } private void initView(Context context) { /** * 设置滚动监听 */ setOnScrollListener(this); initFootView(context); } private void initFootView(Context context) { footerView = new LinearLayout(context); ProgressBar progressBar = new ProgressBar(context); LinearLayout.LayoutParams progressBarParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); progressBarParams.setMargins(10, 0, 10, 0); progressBar.setLayoutParams(progressBarParams); footerView.addView(progressBar); TextView textView = new TextView(context); textView.setText("loading"); footerView.addView(textView); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.gravity = Gravity.CENTER; textView.setLayoutParams(layoutParams); addFooterView(footerView); } /** * 滚动监听 * * @param view * @param scrollState */ @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (totalCount == lastVisibleCount && scrollState == SCROLL_STATE_IDLE) { if (!isLoading) { footerView.setVisibility(VISIBLE); isLoading = true; //加载更多 if (iLoadMoreListener != null) { iLoadMoreListener.loadMore(); } else { new Throwable("fuck you!"); } } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { this.lastVisibleCount = firstVisibleItem + visibleItemCount; this.totalCount = totalItemCount; } public void completeLoadMore() { isLoading = false; footerView.setVisibility(GONE); /** * 滚动 */ smoothScrollToPosition(lastVisibleCount); } /** * 加载更多接口回调 * * @param iLoadMoreListener */ public void setLoadMoreListener(ILoadMoreListener iLoadMoreListener) { this.iLoadMoreListener = iLoadMoreListener; } public interface ILoadMoreListener { void loadMore(); }}
使用方法:
listView.setLoadMoreListener(new LoadMoreListView.ILoadMoreListener() { @Override public void loadMore() {adapter.addData(getMoreList());listView.completeLoadMore();}});
阅读全文
1 0
- 自动加载更多的listView
- listView的加载更多
- Android自定义View-自动加载更多的ListView
- 一个到顶部自动加载更多的ListView
- ListView滚动到底部自动加载更多
- 实现Android ListView 自动加载更多内容
- ListView滚动到底部自动加载更多
- ListView的下拉加载更多
- listview加载刷新加载更多的逻辑
- ListView的加载更多的写法
- listview底部加载更多的操作
- ListView的下拉刷新,点击加载更多
- 关于listview的上拉加载更多
- 自定义listview的上拉加载更多
- PulmListView:上拉加载更多的ListView
- ListView下拉刷新,上拉自动加载更多
- ListView下拉刷新,上拉自动加载更多
- ListView下拉刷新,上拉自动加载更多
- Android webView加载数据时内存溢出问题
- leetcode 192. Word Frequency
- 网络的拓扑和算法复杂度
- 线程第一章
- Android NDK: From Elementary to Expert Episode 10
- 自动加载更多的listView
- vs2010下 转换到 COFF 期间失败: 文件无效或损坏
- C语言getchar()、getch()、scanf()对比(二)
- [Havok学习笔记(2)] HAT样例AnimatedAttachments
- Java日期工具类
- ueditor iframe被过滤掉问题,优酷视频链接
- iOS利用HealthKit获取健康里的步数和睡眠时间
- 对项目的一点思考
- 图像特征