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

来源:互联网 发布:中国的农作物产量知乎 编辑:程序博客网 时间:2024/05/16 18:29

        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>

//最后效果


0 0
原创粉丝点击