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);
visibleItemCount = recyclerView.getChildCount();
totalItemCount = mLinearLayoutManager.getItemCount();
firstVisiableItem = mLinearLayoutManager.findFirstVisibleItemPosition();
if (isPulling) {
if (totalItemCount > previousTotal) {
isPulling = false;
previousTotal = totalItemCount;
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
Re
cycleView越来越流行起来,以前的list
view终将被Reccylce
View所替代,list
view实现分批
分页加载能添加foot
View,head
View,但是Re
cycleView如何实现呢?
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了。。。
在实际项目中,列表通常是分页的,请求服务器也只会一次请求若干条,按需加载,这样比较节省流量,这