Android-自定义控件基础-ListView的加载更多
2018-03-28 08:45
435 查看
ListView加载更多与之前的下拉刷新实现的方式差不多,都是通过自定义控件来实现的,而且都是通过重写ListView来实现的。
1.foot布局
foot布局当中有一个progressbar控件,在我们使用这个控件的时候,要注意一点:如果我们想要使用·父布局来限制progressbar的大小,如果progressbar的layout_width设置的是wrap_content的话,会发现父布局对progressbar的限制失效了,解决的办法就是,将layout_width设置为match_parent。<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="30dp" android:gravity="center" android:paddingBottom="5dp" android:paddingTop="5dp" android:background="#33ff0000" > <ProgressBar android:id="@+id/id_progressbar" android:layout_width="wrap_content" android:layout_height="match_parent" /> <TextView android:id="@+id/id_textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="加载更多" android:textSize="20sp" /> </LinearLayout>
2.将Foot布局加载到ListView中
自定义ListView中的代码就非常的简单,最重要的是一个回调接口,供MainActivity来实现。private View mFootView = null; private LayoutInflater mInflater = null; private int mTotalItemCount = 0; // ListView的Item总数目 private int mLastItemCount = 0; //最后一个Item的位置 private boolean mIsLoad = false; //判断是否在加载
public ListViewLoadMore(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } private void initView(Context context) { mInflater = LayoutInflater.from(context); mFootView = mInflater.inflate(R.layout.foot_layout, null, false); mFootView.setVisibility(View.GONE); addFooterView(mFootView); setOnScrollListener(this); } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(mLastItemCount == mTotalItemCount && scrollState == SCROLL_STATE_IDLE) { if(!mIsLoad) { mIsLoad = true; mFootView.setVisibility(View.VISIBLE); mListener.onLoad(); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { mTotalItemCount = totalItemCount; mLastItemCount = firstVisibleItem + visibleItemCount; } public void setOnLoadListener(OnLoadListener listener) { mListener = listener; } public interface OnLoadListener { public void onLoad(); } public void loadComplete() { mIsLoad = false; mFootView.setVisibility(View.VISIBLE); }
相关文章推荐
- Android ListView 下拉刷新,上拉加载更多,带动画 自定义控件
- Android自定义控件(一) 下拉刷新,上拉分页加载更多(支持ListView, GridView, ScrollView)
- Android自定义控件(二) 下拉刷新,上拉分页加载更多(支持ListView, GridView, ScrollView)
- Android的ListView分页功能(上滑加载更多)
- Android ListView下拉与上拉刷新加载更多数据 二
- Android实现上拉加载更多ListView(PulmListView)
- android 超牛逼Listview滑动删除等菜单+下拉刷新加载更多
- Android下拉刷新上拉加载更多的扩展ListView
- ZrcListView:一个流畅又漂亮的Android下拉刷新与加载更多列表组件
- [Android]下拉刷新和上拉加载更多Listview,仿知乎
- android 自定义ListView实现下拉刷新、分页加载、点击事件——自定义控件学习(七)
- Android XListView下拉刷新和上拉加载更多
- Android_ListView上拉加载更多(ListView分页功能)
- Android自定义控件——ListView的下拉刷新与上拉加载
- Android MVP设计框架模板 之 漂亮ListView上拉刷新下拉加载更多
- Android界面实现 整合了刷新、加载更多、滑动删除功能的XListview
- Android滑动冲突解决方式(下拉刷新上拉加载更多,适配RecyclerView/ListView/ScrollView)
- Android自定义控件——ListView的下拉刷新与上拉加载
- android ListView下拉刷新上拉加载更多
- Android自定义View之快速实现下拉刷新, 点击加载更多ListView