SwipeRefreshLayout +RecyclerView 实现下拉刷新上拉加载

首先看一下布局

 <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
     android:id="@+id/swip"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
     <androidx.recyclerview.widget.RecyclerView
         android:layout_marginLeft="15dp"
         android:layout_marginRight="15dp"
         android:id="@+id/recy_list"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="9dp"
         tools:listitem="@layout/item_profile" />
 </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

看一下实际Activity

public class PageActivity extends BaseDJActivity {
    private SwipeRefreshLayout swipeRefreshLayout;
    private RecyclerView recyList;
    private ProFileAdapert proFileAdapert;
    private String companyId;
    private ProFileModel proFileModel;
    private List<ProFileBean.ListBean> listProFile = new ArrayList<>();
    private int page = 1;
    private boolean isNull = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.page_activity);
        initView();

    }

    private void initView() {
        recyList = findViewById(R.id.recy_list);
        swipeRefreshLayout = findViewById(R.id.swip);
        recyList.setLayoutManager(new LinearLayoutManager(PageActivity.this));
        proFileModel = new ViewModelProvider(this).get(ProFileModel.class);
        companyId = CommenArgs.userInfo.getCompanyId();
        initData(1);
        recyList.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (isSlideToBottom(recyclerView)) {
                    if (listProFile.size() >= 10) {
                        if (isNull != true) {
                            page++;
                            initData(page);
                        }
                    }

                }
            }
        });

        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        page = 1;
                        listProFile.clear();
                        initData(1);
                        proFileAdapert.notifyDataSetChanged();
                        swipeRefreshLayout.setRefreshing(false);
                    }

                }, 1500);
            }
        });
    }

    public void initData(int page) {
        //网络请求拿到数据
        proFileModel.getFroFilelists(this, companyId, page + "", 10 + "", "", "", new ICell<ProFileBean>() {
            @Override
            public void cell(ProFileBean cell) {

                if (cell.getList().size() != 0) {
                    listProFile.clear();
                    listProFile.addAll(cell.getList());
                    recyList.setAdapter(proFileAdapert = new ProFileAdapert(PageActivity.this, listProFile, ""));

                } else {
                    isNull = true;
                }
            }
        });

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    protected boolean isSlideToBottom(RecyclerView recyclerView) {
        if (recyclerView == null) return false;
        if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() >= recyclerView.computeVerticalScrollRange())
            return true;
        return false;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值