上拉刷新下拉加载控件MaterialRefreshLayout的使用

MaterialRefreshLayout 使用详解
本文介绍了一个优秀的上拉刷新、下拉加载控件 MaterialRefreshLayout 的使用方法。包括如何在项目中引入依赖、XML 配置参数解析及 Java 代码示例。通过具体的实例展示了如何设置自动刷新、监听刷新事件等。

        MaterialRefreshLayout 一个非常好的上拉刷新下拉加载控件,废话不多说上代码:


首选在项目的build里面导入依赖:

dependencies {
/*下拉刷新上拉加载依赖materialrefreshlayout*/
compile 'com.cjj.materialrefeshlayout:library:1.3.0'
}

XML代码;

<?xml version="1.0" encoding="utf-8"?><!--注意必须materialRefreshLayout必须为根节点;
注意下拉刷新默认是没有的需要设置isLoadMOre为true才有下拉刷新;
属性overlay为true有下拉覆盖listView波浪效果,默认为false;
属性wave_color设置下拉背景颜色;
属性app:wave_height_type="normal"设置下拉背景高度,normal为标准的,higher为较高的
属性progress_colors设置进度动画颜色
属性app:progress_show_arrow="false"实现显示圆形进度里面的箭头
-->
<com.cjj.MaterialRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mrl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:isLoadMore="true"
    app:overlay="true"
    app:progress_show_arrow="false"
    app:progress_colors="@array/refreshColor"
    app:wave_color="@color/waveColor"
    app:wave_height_type="higher"
    tools:context="com.example.materialrefreshlayoutdemo.MainActivity">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_blue_dark" />
</com.cjj.MaterialRefreshLayout>


java代码;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        initView();
    }

    //数据
    List<String> list = new ArrayList<>();

    private void initData() {
        list.addAll(Arrays.asList("安卓", "JAVA", "iOS", "H5"));
    }

    //组件初始化
    MaterialRefreshLayout mrl;
    ListView listView;
    ArrayAdapter<String> adapter;

    private void initView() {
        mrl = (MaterialRefreshLayout) findViewById(R.id.mrl);
        listView = (ListView) findViewById(R.id.lv);

        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
        listView.setAdapter(adapter);


        //设置自动下拉刷新
        //注意要加载数据必须设置个延迟,要不代码执行太快获取不到数据报空指针;
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //数据
                refreshData();
                //设置自动下拉刷新
                mrl.autoRefresh();
            }
        }, 3000);

        //设置自动上拉刷新
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //数据
                refreshData();
                //设置自动上拉刷新
                mrl.autoRefreshLoadMore();
            }
        }, 2000);


        //监听mrl
        mrl.setMaterialRefreshListener(new MaterialRefreshListener() {
            @Override
            public void onRefresh(MaterialRefreshLayout materialRefreshLayout) {
                //下拉刷新...加载数据和关闭
                //使用handler延迟时间模拟加载数据
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //下拉刷新停止
                        //加载的数据
                        mrl.finishRefresh();
                        //关闭动画
                        refreshData();
                    }
                }, 3000);

            }

            //注意这个下拉加载的监听需要自己重写,因为系统默认是只有上拉刷新
            @Override
            public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLayout) {
                super.onRefreshLoadMore(materialRefreshLayout);
                //上拉刷新.. 加载数据和最后关闭
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //刷新加载的数据
                        refreshData();
                        //关闭加载动画
                        mrl.finishRefreshLoadMore();

                    }
                }, 3000);

            }
        });


    }

    //更新的数据
    private void refreshData() {
        //刷新加载的数据
        list.addAll(Arrays.asList("三星", "华为", "苹果", "小米", "步步高", "OPPO"));
        //刷新适配器
        adapter.notifyDataSetChanged();
    }


}

colors文件中引用的颜色

<array name="refreshColor">
    <item>@color/material_yellow</item>
    <item>@color/material_blue</item>
    <item>@color/material_red</item>
    <item>@color/material_green</item>
</array>

//最后效果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值