diff --git a/app/src/main/java/cn/droidlover/xrecyclerview/demo/MainActivity.java b/app/src/main/java/cn/droidlover/xrecyclerview/demo/MainActivity.java
index 8e4e1b7..fb34587 100755
--- a/app/src/main/java/cn/droidlover/xrecyclerview/demo/MainActivity.java
+++ b/app/src/main/java/cn/droidlover/xrecyclerview/demo/MainActivity.java
@@ -3,11 +3,14 @@
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.util.Log;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Logger;
import cn.droidlover.xrecyclerview.RecyclerItemCallback;
import cn.droidlover.xrecyclerview.XRecyclerView;
@@ -15,12 +18,13 @@
public class MainActivity extends Activity {
XRecyclerView recyclerView;
+ SwipeRefreshLayout swipeLayout;
TextView tv_next;
TestRecAdapter adapter;
static final int MAX_PAGE = 5;
- private int pageSize = 12;
+ private int pageSize = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -28,6 +32,7 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
recyclerView = (XRecyclerView) findViewById(R.id.recyclerView);
+ swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipeLayout);
tv_next = (TextView) findViewById(R.id.tv_next);
tv_next.setOnClickListener(new View.OnClickListener() {
@@ -37,6 +42,12 @@ public void onClick(View v) {
}
});
+ swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ recyclerView.onRefresh();
+ }
+ });
initAdapter();
loadData(1);
}
@@ -51,7 +62,7 @@ private void initAdapter() {
public void onItemClick(int position, TestRecAdapter.Item model, int tag, TestRecAdapter.ViewHolder holder) {
super.onItemClick(position, model, tag, holder);
- switch (tag){
+ switch (tag) {
case TestRecAdapter.TAG_CLICK:
//TODO 事件处理
break;
@@ -75,6 +86,11 @@ public void onLoadMore(int page) {
private void loadData(final int page) {
+ if (page > 1) {
+ Log.e("2222", "load more");
+ } else {
+ Log.e("2222", "refresh");
+ }
recyclerView.postDelayed(new Runnable() {
@Override
public void run() {
@@ -85,6 +101,8 @@ public void run() {
adapter.setData(list);
}
recyclerView.setPage(page, MAX_PAGE);
+
+ swipeLayout.setRefreshing(false);
}
}, 500L);
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f733268..59df97b 100755
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -37,10 +37,19 @@
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
diff --git a/library/src/main/java/cn/droidlover/xrecyclerview/XRecyclerView.java b/library/src/main/java/cn/droidlover/xrecyclerview/XRecyclerView.java
index 0991cc7..5ba44f4 100644
--- a/library/src/main/java/cn/droidlover/xrecyclerview/XRecyclerView.java
+++ b/library/src/main/java/cn/droidlover/xrecyclerview/XRecyclerView.java
@@ -39,6 +39,7 @@ public class XRecyclerView extends RecyclerView {
private int currentPage = 1;
private boolean isRefresh = false;
private boolean isRefreshEnabled = true; //是否可刷新
+ private int lastVelocityY = 0;
XRecyclerAdapter adapter;
@@ -179,6 +180,7 @@ public void setLayoutManager(LayoutManager layout) {
@Override
public boolean fling(int velocityX, int velocityY) {
+ lastVelocityY = velocityY;
return super.fling((int) (velocityX * xFactor), (int) (velocityY * yFactor));
}
@@ -553,6 +555,7 @@ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& !loadMore
+ && lastVelocityY > 0
&& getLastVisibleItemPosition(recyclerView.getLayoutManager()) + LOAD_MORE_ITEM_SLOP > totalCount) {
if (totalPage > currentPage) {
@@ -580,7 +583,6 @@ && getLastVisibleItemPosition(recyclerView.getLayoutManager()) + LOAD_MORE_ITEM_
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
-
}
};