SmartRefreshLayout+CommonAdapter打造上拉加载下拉刷新界面
2017-08-26 11:42
369 查看
2018年1月9日更新
我之前的文章提及过万能适配器
万能适配器(一)
万能适配器(二)
我们当时提及过这个万能适配器要是能搭配刷新库一起使用就更好了,现在最热的刷新库要属SmartRefreshLayout了,附上SmartRefreshLayout的github地址
SmartRefreshLayout github
前期准备已经做完了,现在要看下我们的效果
1 导入三方库
compile 'com.zhy:base-adapter:3.0.3' //万能适配器仅针对Listview compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-6' //智能刷新库目前最新版
2 自定义Adapter
public class MyAdapter extends CommonAdapter<String> { public MyAdapter(Context context, int layoutId, List<String> datas) { super(context, layoutId, datas); } @Override protected void convert(ViewHolder vh, String item, int position) { vh.setText(R.id.tv, item); } }
3 MainActivity
package com.universalrefresh; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreater; import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreater; import com.scwang.smartrefresh.layout.api.RefreshFooter; import com.scwang.smartrefresh.layout.api.RefreshHeader; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.footer.BallPulseFooter; import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.scwang.smartrefresh.layout.header.BezierRadarHeader; import com.scwang.smartrefresh.layout.header.ClassicsHeader; import com.scwang.smartrefresh.layout.header.FalsifyHeader; import com.scwang.smartrefresh.layout.listener.OnLoadmoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<String> list; private ListView listView; private SmartRefreshLayout refreshLayout; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listview); refreshLayout = (SmartRefreshLayout) findViewById(R.id.slayout); initData(); myAdapter = new MyAdapter(this,R.layout.item,list); listView.setAdapter(myAdapter); refreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(RefreshLayout refreshlayout) { refreshLayout.finishRefresh(2000);//刷新的回调方法 } }); refreshLayout.setOnLoadmoreListener(new OnLoadmoreListener() { @Override public void onLoadmore(RefreshLayout refreshlayout) { refreshLayout.finishLoadmore(2000);//加载更多 } }); SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater() { @NonNull @Override public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { return new ClassicsHeader(context); } }); SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() { @NonNull @Override public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) { return new ClassicsFooter(context); } }); } private void initData() { list = new ArrayList<>(); for(int i=0;i<20;i++){ list.add("我是第" + i); } } }
项目实战
在我的项目中有一个需求是:
AB两个页面但是需要不一样的上拉加载和下拉刷新的效果,因为SmartRefeshLayout设置Header和Footer是全局设置的,我一直认为是不可以更改的,只能统一
其实的话:
刚开始A页面设置A样式,跳转到B页面设置成了B样式,这样B页面跳转到非A页面都会显示B样式,所以你需要在B页面跳转到其他页面前把样式改为A样式。
@Override protected void onPause() { super.onPause(); SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater() { @NonNull @Override public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { return new ClassicsHeader(context); } }); }
相关文章推荐
- 下拉刷新、上拉加载SmartRefreshLayout
- Android进阶之路 - 5分钟内快速实现下拉刷新与上拉加载的SmartRefreshLayout
- SmartRefreshLayout集成笔记,实现下拉刷新上拉加载更多。
- SmartRefreshLayout实现下拉刷新上拉加载
- 用MaterialRefreshLayout实现下拉刷新 上拉加载更多
- Android通用可自定义下拉刷新上拉加载组件PopularRefreshLayout
- MaterialRefreshLayout实现下拉刷新,下拉加载更多
- 下拉刷新控件一个很好用的开源项目SmartRefreshLayout
- Android-详解RecyclerView+BGARefreshLayout实现自定义下拉刷新、上拉加载和侧滑删除效果
- TwinklingRefreshLayout 支持下拉刷新和上拉加载的 RefreshLayout,自带越界回弹效果,支持 RecyclerView,AbsListView,ScrollView,We
- MaterialRefreshLayout实现下拉刷新上拉加载更多
- 自定义控件: 万能下拉刷新及上拉加载控件SuperRefreshLayout-2
- 最强大的下拉刷新框架_SmartRefreshLayout的基本使用
- Android自定义控件实战——实现仿IOS下拉刷新上拉加载 PullToRefreshLayout
- Android SwipeRefreshLayout{v4包中带的}扩展SwipyRefreshLayout实现下拉刷新,下拉加载
- TwinklingRefreshLayout 支持下拉刷新和上拉加载的 RefreshLayout,自带越界回弹效果,支持 RecyclerView,AbsListView,ScrollView等
- Android实现下拉刷新上拉加载(PullToRefreshLayout)
- MaterialRefreshLayout(下拉刷新,上拉加载)
- MaterialRefreshLayout(下拉刷新和上拉加载)
- SmartRefreshLayout刷新控件的使用方法 (刷新加载时用GIF动画)