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); - } };