RecycleView + SwipeRefreshLayout 实现下拉刷新

本文简要介绍了如何结合SwipeRefreshLayout和RecycleView实现下拉刷新功能。SwipeRefreshLayout是Google官方提供的控件,需要支持库版本19.1以上。通过设置监听器、控制刷新状态和设定颜色主题,可以轻松实现下拉刷新效果。同时,提供了项目源码的GitHub链接,供读者参考学习。
摘要由CSDN通过智能技术生成

在这里就不具体的介绍RecycleView的用法和简介了,如果想了解更多关于RecycleView的更多介绍,可以看下我的另一篇blog,RecycleView的简单介绍:
http://blog.csdn.net/wuyinlei/article/details/50593747

在这里就简单的介绍些SwipeRefreshLayout吧:
SwipeRefreshLayout是Google官方更新的一个widget,可以实现下拉刷新的效果,该控件集成子ViewGroup在support-v4兼容包下,不过我们想要使用,必须support library的版本在19.1以上

基本使用方法:

  • 1、setOnRefreshListener(OnRefreshListener):添加下拉刷新监听器
  • 2、setRefreshing(boolean):显示或者隐藏刷新进度条
  • 3、isRefreshing():检查是否处于刷新状态
  • 4、setColorSchemeResources():设置进度条的颜色主题(最多四个)

下面就来实例代码吧,用的有下拉刷新哦:

package com.example.ruolan.recycleview;

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;

    private SwipeRefreshLayout mLayout;

    private List<String> datas = new ArrayList<>();

    private MyAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLayout = (SwipeRefreshLayout) this.findViewById(R.id.refreshLayout);
        mRecyclerView = (RecyclerView) this.findViewById(R.id.recyclerView);
        mAdapter = new MyAdapter(datas);
        mRecyclerView.setAdapter(mAdapter);
        //下面可以自己设置排版方式
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        //mRecyclerView.setLayoutManager(new GridLayoutManager(this,4));
        //设置分割线
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));

        //下面一行如果不写也是会自动调用的
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        mAdapter.setOnItemListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onClick(View v, int position, String city) {
                Toast.makeText(MainActivity.this, "你好", Toast.LENGTH_SHORT).show();
            }
        });
        //RecycleView的事件监听
        //初始化数据
        initDatas();
        initRefreshLayout();
    }

    private void initRefreshLayout() {
        //设置刷新的颜色
        mLayout.setColorSchemeResources(
                android.R.color.background_dark,
                android.R.color.holo_red_dark,
                android.R.color.holo_green_dark,
                android.R.color.holo_orange_dark);
        //拖动多长的时候开始刷新
        mLayout.setDistanceToTriggerSync(100);

        mLayout.setProgressBackgroundColorSchemeColor(getResources().getColor(R.color.item_press));

        //设置大小
        mLayout.setSize(SwipeRefreshLayout.LARGE);
        //刷新监听器
        mLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        for (int i = 0; i <= 10; i++){
   
                            mAdapter.addData(i,"new City " + i);
                        }
                        //通知刷新
                        mAdapter.notifyItemRangeChanged(0,10);
                        mRecyclerView.scrollToPosition(5);

                        //完成
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值