安卓开发一年了, 还是个小白,哈哈,各位借用哈就行了,仅供参考哦 !
这本人第一次尝试自定义View ,通过组合SwipeRefreshLayout和listview,实现了下拉刷新和上拉加载!
//组合方法 继承SwipeRefreshLayout哈
listview = new ListView(context); LayoutParams parm = new LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.MATCH_PARENT); listview.setLayoutParams(parm); this.addView(listview, 1);
1.SwipeRefreshLayout
谷歌最近退出的 ,功能很好用,下拉效果很绚丽,豌豆荚等很多大boss都在用,主要是为了复制它的这个功能,猜谋生了自定义一下,组合SwipeRefreshLayout和listview,实现listview的列表功能
2.看图 , 下拉 看代码:
下拉刷新 具体SwipeRefreshLayout的可以百度 可以改变圈圈的颜色哈
具体使用方法 参考 http://www.open-open.com/lib/view/open1430797271054.html
监听SwipeRefreshLayout的下拉刷新
this.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { refreshlistener.onPullDownToRefresh(); } });
3 上拉,listview起作用了,没有做footview 加载更多 ,看后续更新,就一个小时,没有做太多繁琐的功能哈!谅解
监听listview滑动到底部
listview.setOnScrollListener(new AbsListView.OnScrollListener() { public int lastItemIndex; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && lastItemIndex == adapter.getCount() - 1) { Log.i(TAG, "onScrollStateChanged"); //加载数据代码,此处省略了 refreshlistener.onPullUpToRefresh(lastItemIndex + 1); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //ListView 的FooterView也会算到visibleItemCount中去,所以要再减去一 lastItemIndex = firstVisibleItem + visibleItemCount - 1; } });
简单的一个回调借口
interface RefreshListener { //下拉 void onPullDownToRefresh(); //上拉 void onPullUpToRefresh(int position); }
//使用方法
listview.setOnRefreshListener(new MyListView.RefreshListener() { @Override public void onPullDownToRefresh() { Toast.makeText(MainActivity.this, "下拉加载", Toast.LENGTH_SHORT).show();
//获取数据 getData(); //nowpos = 0; //结束刷新 listview.completeRefresh(); } @Override public void onPullUpToRefresh(int position) {
//通过回调位置信息 也可以定位adapter到最新的位置
//listview.setSelection(position); nowpos = position; Toast.makeText(MainActivity.this, "上拉加载", Toast.LENGTH_SHORT).show(); getData(); } });
//代码不多 仅供参考哈
有时间后续更新 加上各种功能哈
demo下载链接:http://download.csdn.net/detail/wap159/9611592