美文网首页
SmartRefreshLayout和BaseRecycleVi

SmartRefreshLayout和BaseRecycleVi

作者: 河马过河 | 来源:发表于2018-09-10 16:45 被阅读202次

一、引入依赖

    //SmartRefreshLayout
    implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1'
    implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.5.1'//没有使用特殊Header,可以不加这行
    //BaseRecyclerViewAdapterHelper
    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.42'

二、SmartRefreshLayout配置

在AppApplication中,添加header和footer配置

 //static 代码段可以防止内存泄露
    static {
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
                return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
            }
        });
        //设置全局的Footer构建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
            @Override
            public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                //指定为经典Footer,默认是 BallPulseFooter
                return new ClassicsFooter(context).setDrawableSize(20);
            }
        });
    }

三、实例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:id="@+id/srl_smart_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_smart_refresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </android.support.v7.widget.RecyclerView>
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>

public class SmartRefreshActivity extends BaseActivity<SmartRefreshPresenter> implements SmartRefreshContract.ISmartRefreshView {
    @BindView(R.id.srl_smart_refresh)
    SmartRefreshLayout srl_smart_refresh;
    @BindView(R.id.rv_smart_refresh)
    RecyclerView rv_smart_refresh;
    private SmartRefreshAdapter adapter;
    private List<SmartRefreshBean> smartRefreshBeanList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_smart_refresh);
        ButterKnife.bind(this);
        presenter = new SmartRefreshPresenter(this);
        srl_smart_refresh.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(RefreshLayout refreshLayout) {
                presenter.getData();
            }
        });
        srl_smart_refresh.setEnableLoadMore(false);
        adapter = new SmartRefreshAdapter(smartRefreshBeanList);
        rv_smart_refresh.setLayoutManager(new LinearLayoutManager(this));
        rv_smart_refresh.setItemAnimator(new DefaultItemAnimator());
        rv_smart_refresh.setHasFixedSize(true);
        rv_smart_refresh.setAdapter(adapter);
        srl_smart_refresh.autoRefresh();
    }

    @Override
    public void showContent(List<SmartRefreshBean> smartRefreshBeans) {
        srl_smart_refresh.finishRefresh();
        srl_smart_refresh.finishLoadMore();
        smartRefreshBeanList.clear();
        smartRefreshBeanList.addAll(smartRefreshBeans);
        adapter.notifyDataSetChanged();
    }
}
public class SmartRefreshAdapter extends BaseQuickAdapter<SmartRefreshBean, BaseViewHolder> {
    public SmartRefreshAdapter(@Nullable List data) {
        super(R.layout.item_smart_refresh, data);
    }


    @Override
    protected void convert(BaseViewHolder helper, SmartRefreshBean item) {
        GlideApp.with(mContext).load(item.getBgPicture()).into((ImageView) helper.getView(R.id.iv_item_smart_refresh));
        helper.setText(R.id.tv_item_smart_refresh, item.getName());
    }
}

河马过河微信公众号.jpg

相关文章

网友评论

      本文标题:SmartRefreshLayout和BaseRecycleVi

      本文链接:https://www.haomeiwen.com/subject/scnsgftx.html