SwipeRefrshLayout+RecyclerView实现刷新功能

来源:互联网 发布:php虚拟物品商城 编辑:程序博客网 时间:2024/06/01 08:17

SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果。基本使用的方法如下:setOnRefreshListener(OnRefreshListener):添加下拉刷新监听器setRefreshing(boolean):显示或者隐藏刷新进度条isRefreshing():检查是否处于刷新状态setColorSchemeResources():设置进度条的颜色主题,最多设置四种,以前的setColorScheme()方法已经弃用了。



public class SwiperRefreshFragment extends Fragment implements TestAdapter.RecyclerViewItemListener {

    private View view;    private SwipeRefreshLayout swiper_refresh;    private RecyclerView recycler_view;    private List<TestBean> testDatas;    private TestAdapter mAdapter;    private Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {                case 1:                    mAdapter.notifyDataSetChanged();                    swiper_refresh.setRefreshing(false);                    break;            }        }    };    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment_swiperefresh, container, false);        testDatas = new ArrayList<>();        initTestData();        initViews(view);        return view;    }    private void initViews(View view) {        recycler_view = (RecyclerView) view.findViewById(R.id.recycler_view);        swiper_refresh = (SwipeRefreshLayout) view.findViewById(R.id.swiper_refresh);        //GridView样式展示        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);        recycler_view.setLayoutManager(linearLayoutManager);        mAdapter = new TestAdapter(testDatas, this);        recycler_view.setAdapter(mAdapter);//        //这句就是添加分隔线//        recycler_view.addItemDecoration(new MyDecoration(getActivity(), MyDecoration.VERTICAL_LIST));//        recycler_view.addItemDecoration(new MyDecoration(getActivity(), MyDecoration.HORIZONTAL_LIST));        //设置item间距,5dp        recycler_view.addItemDecoration(new SpaceItemDecoration(5));        swiper_refresh.setColorSchemeResources(R.color.colorPrimaryDark);        swiper_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                //模拟刷新数据                freshData();            }        });    }    @Override    public void onAttach(Context context) {        super.onAttach(context);    }    private void initTestData() {        TestBean bean;        for (int i = 0; i < 12; i++) {            bean = new TestBean();            bean.setContent("测试_" + i + "_数据");            testDatas.add(bean);        }    }    private void freshData() {        testDatas.clear();        new Thread(new Runnable() {            @Override            public void run() {                try {                    Thread.sleep(1500);                    TestBean bean;                    for (int i = 0; i < 12; i++) {                        bean = new TestBean();                        bean.setContent("刷新_" + i + "_数据");                        testDatas.add(bean);                    }                    mHandler.sendEmptyMessage(1);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }).start();    }    @Override    public void onItemClick(int position) {        Toast.makeText(getActivity(), "点击了" + testDatas.get(position).getContent(), Toast.LENGTH_LONG).show();    }}

布局文件:

<android.support.design.widget.CoordinatorLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="#f5f5f5"        >    <android.support.v4.widget.SwipeRefreshLayout            android:id="@+id/swiper_refresh"            android:layout_width="match_parent"            android:layout_height="match_parent">        <android.support.v7.widget.RecyclerView                android:id="@+id/recycler_view"                android:layout_margin="10dp"                android:layout_width="match_parent"                android:layout_height="match_parent"/>    </android.support.v4.widget.SwipeRefreshLayout></android.support.design.widget.CoordinatorLayout>


现在大多数用户都在使用安卓5.0以上版本手机,项目中逐渐加入了material design设计风格。 边学习边整理,写了个简单地DEMO,工作之余还会不断完善更新。

demo地址:https://github.com/ldm520/ANDROID_MATERIAL_DESIGN

阅读全文
0 0
原创粉丝点击