添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

recyclerview分页加载,需要重写OnScrollListener。
activity:

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private MainAdapter adapter;
    private ProgressBar progressBar;
    private int page = 0;
    private List<People> peopleList;
    private int index = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = findViewById(R.id.recyclerView);
        progressBar = findViewById(R.id.progressBar);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        adapter = new MainAdapter(this);
        recyclerView.setAdapter(adapter);
        recyclerView.addOnScrollListener(new LoadMoreOnScrollListener(linearLayoutManager) {
            @Override
            public void onLoadMore(int currentPage) {
                if (currentPage > page) {
                    delay();
        });
        peopleList = new ArrayList<>();
        delay();
    private void delay() {
        progressBar.setVisibility(View.VISIBLE);
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1500);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            progressBar.setVisibility(View.GONE);
                            getData();
                    });
                } catch (InterruptedException e) {
                    e.printStackTrace();
        }).start();
    private void getData() {
        for (int i=0; i < 30; i++) {
            People people = new People();
            people.setName("name:" + index);
            people.setAge(index);
            peopleList.add(people);
            index++;
        page++;
        adapter.setData(peopleList);

核心类LoadMoreOnScrollListener

package com.example.myapplication.listener;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
public abstract class LoadMoreOnScrollListener extends RecyclerView.OnScrollListener {
    private LinearLayoutManager mLinearLayoutManager;
    private int currentPage = 1;
     * 已经加载出来的item个数
    private int totalItemCount;
     * 上一个totalItemCount
    private int previousTotal = 0;
     * 屏幕上可见item个数
    private int visibleItemCount;
     * 屏幕可见item的第一个
    private int firstVisiableItem;
     * 是否正在上拉数据
    private boolean isPulling = true;
    public LoadMoreOnScrollListener(LinearLayoutManager linearLayoutManager) {
        this.mLinearLayoutManager = linearLayoutManager;
    @Override
    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        // 可见item个数
        visibleItemCount = recyclerView.getChildCount();
        // item总数
        totalItemCount = mLinearLayoutManager.getItemCount();
        // 第一个可见item
        firstVisiableItem = mLinearLayoutManager.findFirstVisibleItemPosition();
        if (isPulling) {
            if (totalItemCount > previousTotal) {
                // 数据成功获取才会执行 说明数据已经加载结束
                isPulling = false;
                previousTotal = totalItemCount;
        //如果获取数据失败,则不会这行此处,因为loading始终为true
        //当最后一个item可见时,执行加载
        if (!isPulling && totalItemCount - visibleItemCount <= firstVisiableItem) {
            currentPage ++;
            onLoadMore(currentPage);
            isPulling = true;
    public abstract void onLoadMore(int currentPage);
                    recyclerview分页加载,需要重写OnScrollListener。activity:public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerView;    private MainAdapter adapter;    private ProgressBar ...
				
我之前工作内容是维护旧的项目,而旧的项目里面用的几乎都是listview,后面公司来了个新的产品经理,他一来就吐槽我们的app,每次获取新的一页列表后,所有列表项(包括前面几页的列表项)都是要全部刷新一遍,这个体验太差了,他说要实现局部刷新,才符合要求。我只好硬着头皮把项目里面的listview慢慢换成RecyclerView. 换成RecyclerView之后,很棘手的一个问题就是,分页问题。因为之前的listview分页都是别人在listview的基础上封装了一个专门用来刷新的Refres...
二、功能实现 2.1 OnTouchListener 记录当前开始滑动位置 要实现翻页滑动首先我们要确定是向前翻页还是向后翻页,这里通过记录开始翻页前当前的位置和滑动后的位置比较即可得知,下面选择手指触摸按下时滑动的位置为当前开始滑动位置: //当前滑动距离 private int offsetY = 0
引包:compile 'com.android.support:recyclerview-v7:24.2.1' compile 'com.jakewharton:butterknife:8.4.0' compile 'com.android.support:cardview-v7:24.2.1'代码:public class Album { String name; String ...
1、重写recycleview滑动监听 public abstract class LoadMoreOnScrollListener extends RecyclerView.OnScrollListener { /**声明一个LinearLayoutMa...
Android QQ交流群:826464336 RecycleView越来越流行起来,以前的listview终将被ReccylceView所替代,listview实现分批分页加载能添加footView,headView,但是RecycleView如何实现呢? private List<MessageContent> rows = new ArrayList<>();
RecyclerView越来越替代ListView,如何上拉加载更多呢? Step 1:自定义Listener继承recyclerView的OnScrollListener public abstract class EndLessOnScrollListener extends RecyclerView.OnScrollListener {...
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match.
PagedRecyclerView 具有用于Android的分页功能的RecyclerView适配器。 它具有RecyclerView的所有功能,但是此适配器可轻松添加对分页(不确定长度)列表的支持。 您可以自定义加载布局,所有数据处理都通过一个简单的Paginator界面完成。 ##如何使用 #### 1)将库添加到您的proyect 在项目gralde文件中添加依赖项 dependencies { ........................    compile 'com.jmleiva.pagedrecyclerview:pagedrecyclerview:1.2' #### 2)创建一个带有RecyclerView的布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android
在开发中常常使用到刷新分页,这里实现一个 RecyclerView 的简单的刷新分页操作,RecyclerView 的刷新分页会了,相信 ListView 、ExpandListView 分组列表的刷新分页肯定不在话下,那就一起来看一下具体是如何实现的。 加载更多数据使用到 RecyclerView 加载多种布局,根据 ViewType 判断加载数据 Item 还是加载 Foot...
通过添加Recyclerview的OnScrollListener来判断Recyclerview是否滑动到底部 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { //当前RecyclerView显示出来的最后一.
第一次写博客,表达可能不是很好,也是仅供初学的朋友们参考下,希望大家见谅。 Recyclerview是 Listview 的升级版本,在项目中使用较为广泛,官方也推荐我们使用 Recyclerview 来代替 Listview,在此就不多说 Recyclerview 的优势特点 balala了。。。 在实际项目中,列表通常是分页的,请求服务器也只会一次请求若干条,按需加载,这样比较节省流量,这