Android自定义ListView实现分页加载
来源:互联网 发布:网络分析软件 编辑:程序博客网 时间:2024/06/05 07:59
用到分页加载一般在ListView滑动中,思路如下:
1.自定义ListView,并实现OnScrollListener接口
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {//当第一个可见Item的位置 + 可见Item的数量 == 所有Item数量时 if(firstVisibleItem + visibleItemCount == totalItemCount){ //1.显示footerView //2.调用接口通知Activity加载数据 }}
2.在构造函数中,listview添加footerView,绑定滚动监听
public LoadListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initView(context); } private void initView(Context context) { footerView = LayoutInflater.from(context).inflate( R.layout.listview_footer, null); footerView.findViewById(R.id.load_layout).setVisibility(View.INVISIBLE); this.addFooterView(footerView); this.setOnScrollListener(this); this.setDividerHeight(dividerHeight); }
3.设一个回调接口,到时候让Activity实现这个接口
// 接口回调 public interface ListViewOnLoaderListener { void onLoad(); } public void setListViewOnLoaderListener( ListViewOnLoaderListener loaderListener) { this.loaderListener = loaderListener; }
4.设置一个公共方法,表示完成了加载,让footerView不可见
/** * 加载完毕 */ public void loadComplete() { isLoad = false; footerView.findViewById(R.id.load_layout).setVisibility(View.INVISIBLE); }
具体的完整的自定义ListView代码在下面
package com.king.mircosoftband.view;import com.king.mircosoftband.R;import com.king.mircosoftband.util.DisplayUtil;import android.content.Context;import android.graphics.Color;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.ListView;public class LoadListView extends ListView implements OnScrollListener { private boolean isLoad = false; private ListViewOnLoaderListener loaderListener; private View footerView; private int totalItemCount;// 总数量; private int lastVisibleItem;// 最后一个可见的item; private int dividerHeight = DisplayUtil.dip2px(getContext(), 8); public LoadListView(Context context) { this(context, null); } public LoadListView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public LoadListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initView(context); } private void initView(Context context) { footerView = LayoutInflater.from(context).inflate( R.layout.listview_footer, null); footerView.findViewById(R.id.load_layout).setVisibility(View.INVISIBLE); this.addFooterView(footerView); this.setOnScrollListener(this); this.setDividerHeight(dividerHeight); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { this.lastVisibleItem = firstVisibleItem + visibleItemCount; this.totalItemCount = totalItemCount; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (lastVisibleItem == totalItemCount) { if(!isLoad && loaderListener != null ){ isLoad = true; footerView.findViewById(R.id.load_layout).setVisibility(View.VISIBLE); loaderListener.onLoad(); } } } /** * 加载完毕 */ public void loadComplete() { isLoad = false; footerView.findViewById(R.id.load_layout).setVisibility(View.INVISIBLE); } // 接口回调 public interface ListViewOnLoaderListener { void onLoad(); } public void setListViewOnLoaderListener( ListViewOnLoaderListener loaderListener) { this.loaderListener = loaderListener; }}
1 0
- Android自定义ListView实现分页加载
- Android ListView 分页加载实现
- listView自定义分页加载
- android 实现listview的分页加载
- android 实现listview的分页加载
- Android自定义ListView实现上滑分页
- listView实现分页加载
- Android ListView 分页加载
- android ListView分页加载
- 自定义ListView实现上拉分页加载更多数据
- ListView 实现像Android Market那样 分页加载 滚动加载
- ListView 实现像Android Market那样 分页加载 滚动加载
- android 自定义ListView实现下拉刷新、分页加载、点击事件——自定义控件学习(七)
- Android自定义ListView(二) - 可上拉加载的ListView(即具有分页功能的ListView)
- 怎么实现listview分页加载
- listView实现分页加载数据
- listview如何实现分页加载
- android UI进阶之实现listview的分页加载
- echarts简单实例+ $.extend()方法解析
- 欢迎使用CSDN-markdown编辑器
- UIWebView 小结
- Mat与IplImage*类型间的转换
- 关于百家姓
- Android自定义ListView实现分页加载
- ubuntu中的用户及分组
- 收集学习Spark GraphX的一些资料
- sql查询执行过程,语句优化,查询优化
- Android studio 多渠道打包
- KVO 和 KVC
- 浅谈闪存控制器架构
- C++中cin、cin.get()、cin.getline()、getline()
- Caffe学习笔记3-Layer的相关学习