package com.bwie.recyclerviewdemo2;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<String> list;
private MyAdapter adapter;
private SwipeRefreshLayout swipeRefreshLayout;
private ProgressBar progressBar;
private LinearLayoutManager layoutManager;
private int lastVisibleItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据
list = new ArrayList<>();
for (int i = 0; i < 10;++i){
list.add("Hello World"+i);
}
swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout);
recyclerView = findViewById(R.id.recyclerView);
progressBar = findViewById(R.id.progressBar);
//线性布局管理器
layoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
adapter = new MyAdapter(this,list);
recyclerView.setAdapter(adapter);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//当用户下拉的时候会被执行
//Toast.makeText(MainActivity.this, "下拉了", Toast.LENGTH_SHORT).show();
onUpdate();
}
});
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
switch (newState){
case RecyclerView.SCROLL_STATE_IDLE://静止状态
{
System.out.println("adapter 里有的条目数"+adapter.getItemCount());
if(adapter.getItemCount() - 1 == lastVisibleItem){
//显示进度条
progressBar.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++){
list.add("世界,你好"+i);
}
//上拉加载更多
adapter.addMore(list);
//隐藏进度条
progressBar.setVisibility(View.GONE);
}
},5000);
}
}
break;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//得到最后一个可见条目
int firstItem = layoutManager.findFirstVisibleItemPosition();//得到第一个可见条目
int lastItem = layoutManager.findLastVisibleItemPosition();
lastVisibleItem = firstItem + lastItem;
System.out.println("条目数 : "+lastItem);
}
});
}
public void onUpdate(){
//模拟网络
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++){
list.add("你好,世界"+i);
}
//下拉刷新
adapter.update(list);
//隐藏进度条
if(swipeRefreshLayout.isRefreshing()){
swipeRefreshLayout.setRefreshing(false);
}
}
},5000);
}
}
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<String> list;
private MyAdapter adapter;
private SwipeRefreshLayout swipeRefreshLayout;
private ProgressBar progressBar;
private LinearLayoutManager layoutManager;
private int lastVisibleItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据
list = new ArrayList<>();
for (int i = 0; i < 10;++i){
list.add("Hello World"+i);
}
swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout);
recyclerView = findViewById(R.id.recyclerView);
progressBar = findViewById(R.id.progressBar);
//线性布局管理器
layoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
adapter = new MyAdapter(this,list);
recyclerView.setAdapter(adapter);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//当用户下拉的时候会被执行
//Toast.makeText(MainActivity.this, "下拉了", Toast.LENGTH_SHORT).show();
onUpdate();
}
});
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
switch (newState){
case RecyclerView.SCROLL_STATE_IDLE://静止状态
{
System.out.println("adapter 里有的条目数"+adapter.getItemCount());
if(adapter.getItemCount() - 1 == lastVisibleItem){
//显示进度条
progressBar.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++){
list.add("世界,你好"+i);
}
//上拉加载更多
adapter.addMore(list);
//隐藏进度条
progressBar.setVisibility(View.GONE);
}
},5000);
}
}
break;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//得到最后一个可见条目
int firstItem = layoutManager.findFirstVisibleItemPosition();//得到第一个可见条目
int lastItem = layoutManager.findLastVisibleItemPosition();
lastVisibleItem = firstItem + lastItem;
System.out.println("条目数 : "+lastItem);
}
});
}
public void onUpdate(){
//模拟网络
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
List<String> list = new ArrayList<>();
for (int i = 0; i < 10; i++){
list.add("你好,世界"+i);
}
//下拉刷新
adapter.update(list);
//隐藏进度条
if(swipeRefreshLayout.isRefreshing()){
swipeRefreshLayout.setRefreshing(false);
}
}
},5000);
}
}