• 注册
当前位置:1313e > 默认分类 >正文

自定义上拉加载控件1---listview实现

效果图:刷新两三次之后就看到“没有更多数据”了(^__^) 耐心点等gif播放哦。

loadmore listview

demo下载:
自定义listview加载更多 - 下载频道 - CSDN.NET
http://download.csdn.net/detail/baidu_31093133/9824346

代码:


/*** Created by REd on 2017/2/25.* 上拉加载更多的listView*/public class LoadMoreListview extends ListView implements AbsListView.OnScrollListener {/*** 底部显示正在加载的页面*/private View footerView = null;private ProgressBar footPro;private TextView footText;/*** 存储上下文*/private Context context;/*** 上拉刷新的ListView的回调监听*/private ScripRefreshListviewCallBack scripRefreshListviewCallBack;/*** 记录第一行Item的数值*/private int firstVisibleItem;public LoadMoreListview(Context context) {super(context);this.context = context;initListView();}public LoadMoreListview(Context context, AttributeSet attrs) {super(context, attrs);this.context = context;initListView();}/*** 初始化ListView*/private void initListView() {// 为ListView设置滑动监听setOnScrollListener(this);// 去掉底部分割线setFooterDividersEnabled(false);}/*** 初始化话底部页面*/public void initBottomView(int resId) {if (footerView == null) {footerView = LayoutInflater.from(this.context).inflate(resId, null);}footPro = (ProgressBar) footerView.findViewById(R.id.foot_pro);footText = (TextView) footerView.findViewById(R.id.foot_tv);footPro.setVisibility(VISIBLE);footText.setVisibility(VISIBLE);addFooterView(footerView);}public void updateFootView() {footPro.setVisibility(GONE);footText.setText("没有更多数据了");}public void onScrollStateChanged(AbsListView view, int scrollState) {//当滑动到底部时if (scrollState == OnScrollListener.SCROLL_STATE_IDLE&& firstVisibleItem != 0) {scripRefreshListviewCallBack.scrollBottomState();}}public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {this.firstVisibleItem = firstVisibleItem;if (footerView != null) {//判断可视Item是否能在当前页面完全显示if (visibleItemCount == totalItemCount) {// removeFooterView(footerView);footerView.setVisibility(View.GONE);//隐藏底部布局} else {// addFooterView(footerView);footerView.setVisibility(View.VISIBLE);//显示底部布局}}}public void setScripRefreshListviewCallBack(ScripRefreshListviewCallBack myPullUpListViewCallBack) {this.scripRefreshListviewCallBack = myPullUpListViewCallBack;}/*** 上拉刷新的ListView的回调监听** @author xiejinxiong*/public interface ScripRefreshListviewCallBack {void scrollBottomState();}}

使用:

//传入自定义的加载数据的底布局
listview1.initBottomView(R.layout.foot_view);
//实现加载更多的回调listview1.setScripRefreshListviewCallBack(new LoadMoreListview.ScripRefreshListviewCallBack() {@Overridepublic void scrollBottomState() {//一旦滑到底部就会触发加载更多Log.i("LHD", "scrollBottomState");if (beans.size() < 30) {loadData();} else {//如果没有更多数据就调用updateFootView显示"没有更多数据"listview1.updateFootView();}}});

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录