From f29f7825768481333b72cc4648249666eec79d61 Mon Sep 17 00:00:00 2001
From: lzx <573842281@qq.com>
Date: Thu, 1 Dec 2016 14:36:58 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3issues67=E6=8F=90=E5=88=B0?=
=?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../LRecyclerview_library.iml | 37 ++------
LRecyclerview_library/build.gradle | 2 +-
.../jdsjlzx/recyclerview/LRecyclerView.java | 35 ++++---
.../recyclerview/LRecyclerViewAdapter.java | 1 -
.../jdsjlzx/recyclerview/LuRecyclerView.java | 16 +++-
.../jdsjlzx/util/RecyclerViewUtils.java | 2 +-
.../jdsjlzx/view/ArrowRefreshHeader.java | 11 +--
.../jdsjlzx/view/LoadingMoreFooter.java | 93 -------------------
app/app.iml | 26 ++----
.../com/lzx/demo/ui/LinearLayoutActivity.java | 13 ++-
build.gradle | 2 +-
11 files changed, 70 insertions(+), 168 deletions(-)
delete mode 100644 LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/LoadingMoreFooter.java
diff --git a/LRecyclerview_library/LRecyclerview_library.iml b/LRecyclerview_library/LRecyclerview_library.iml
index 8d3be77..55688e7 100644
--- a/LRecyclerview_library/LRecyclerview_library.iml
+++ b/LRecyclerview_library/LRecyclerview_library.iml
@@ -19,6 +19,7 @@
+
@@ -46,7 +47,6 @@
-
@@ -54,7 +54,6 @@
-
@@ -62,47 +61,27 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LRecyclerview_library/build.gradle b/LRecyclerview_library/build.gradle
index a26e96b..7dfab4e 100644
--- a/LRecyclerview_library/build.gradle
+++ b/LRecyclerview_library/build.gradle
@@ -1,6 +1,6 @@
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
-group=com.github.jdsdjlzx
+
android {
compileSdkVersion 25
diff --git a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerView.java b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerView.java
index 992f1f7..61720f9 100644
--- a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerView.java
+++ b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerView.java
@@ -8,7 +8,6 @@
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewParent;
@@ -27,7 +26,8 @@
*
*/
public class LRecyclerView extends RecyclerView {
- private boolean pullRefreshEnabled = true;
+ private boolean mPullRefreshEnabled = true;
+ private boolean mLoadMoreEnabled = true;
private OnRefreshListener mRefreshListener;
private OnLoadMoreListener mLoadMoreListener;
private LScrollListener mLScrollListener;
@@ -106,7 +106,7 @@ public LRecyclerView(Context context, AttributeSet attrs, int defStyle) {
}
private void init() {
- if (pullRefreshEnabled) {
+ if (mPullRefreshEnabled) {
mRefreshHeader = new ArrowRefreshHeader(getContext());
mRefreshHeader.setProgressStyle(mRefreshProgressStyle);
}
@@ -124,7 +124,10 @@ public void setAdapter(Adapter adapter) {
mDataObserver.onChanged();
mWrapAdapter.setRefreshHeader(mRefreshHeader);
- mWrapAdapter.addFooterView(mFootView);
+
+ if(mLoadMoreEnabled) {
+ mWrapAdapter.addFooterView(mFootView);
+ }
}
@@ -137,7 +140,6 @@ public void onChanged() {
LRecyclerViewAdapter lRecyclerViewAdapter = (LRecyclerViewAdapter) adapter;
if (lRecyclerViewAdapter.getInnerAdapter() != null && mEmptyView != null) {
int count = lRecyclerViewAdapter.getInnerAdapter().getItemCount();
- Log.e("lzx","count " + count);
if (count == 0) {
mEmptyView.setVisibility(View.VISIBLE);
LRecyclerView.this.setVisibility(View.GONE);
@@ -200,7 +202,7 @@ public boolean onTouchEvent(MotionEvent ev) {
case MotionEvent.ACTION_MOVE:
final float deltaY = ev.getRawY() - mLastY;
mLastY = ev.getRawY();
- if (isOnTop() && pullRefreshEnabled && (appbarState == AppBarStateChangeListener.State.EXPANDED)) {
+ if (isOnTop() && mPullRefreshEnabled && (appbarState == AppBarStateChangeListener.State.EXPANDED)) {
mRefreshHeader.onMove(deltaY / DRAG_RATE);
if (mRefreshHeader.getVisibleHeight() > 0 && mRefreshHeader.getState() < ArrowRefreshHeader.STATE_REFRESHING) {
return false;
@@ -210,7 +212,7 @@ public boolean onTouchEvent(MotionEvent ev) {
break;
default:
mLastY = -1; // reset
- if (isOnTop() && pullRefreshEnabled && appbarState == AppBarStateChangeListener.State.EXPANDED) {
+ if (isOnTop() && mPullRefreshEnabled && appbarState == AppBarStateChangeListener.State.EXPANDED) {
if (mRefreshHeader.releaseAction()) {
if (mRefreshListener != null) {
mRefreshListener.onRefresh();
@@ -243,7 +245,7 @@ private int findMin(int[] firstPositions) {
}
private boolean isOnTop() {
- if (pullRefreshEnabled && mRefreshHeader.getParent() != null) {
+ if (mPullRefreshEnabled && mRefreshHeader.getParent() != null) {
return true;
} else {
return false;
@@ -275,7 +277,16 @@ public void setRefreshHeader(BaseRefreshHeader refreshHeader) {
}
public void setPullRefreshEnabled(boolean enabled) {
- pullRefreshEnabled = enabled;
+ mPullRefreshEnabled = enabled;
+ }
+
+ public void setLoadMoreEnabled(boolean enabled) {
+ mLoadMoreEnabled = enabled;
+ if (!enabled) {
+ if (mFootView instanceof LoadingFooter) {
+ mWrapAdapter.removeFooterView(mFootView);
+ }
+ }
}
public void setRefreshProgressStyle(int style) {
@@ -314,7 +325,7 @@ public interface LScrollListener {
}
public void setRefreshing(boolean refreshing) {
- if (refreshing && pullRefreshEnabled && mRefreshListener != null) {
+ if (refreshing && mPullRefreshEnabled && mRefreshListener != null) {
mRefreshHeader.setState(ArrowRefreshHeader.STATE_REFRESHING);
mRefreshHeaderHeight = mRefreshHeader.getMeasuredHeight();
mRefreshHeader.onMove(mRefreshHeaderHeight);
@@ -327,7 +338,7 @@ public void forceToRefresh() {
if(state == LoadingFooter.State.Loading) {
return;
}
- if (pullRefreshEnabled && mRefreshListener != null) {
+ if (mPullRefreshEnabled && mRefreshListener != null) {
scrollToPosition(0);
mRefreshHeader.setState(ArrowRefreshHeader.STATE_REFRESHING);
mRefreshHeader.onMove(mRefreshHeaderHeight);
@@ -404,7 +415,7 @@ public void onScrollStateChanged(int state) {
mLScrollListener.onScrollStateChanged(state);
}
- if (mLoadMoreListener != null) {
+ if (mLoadMoreListener != null && mLoadMoreEnabled) {
if (currentScrollState == RecyclerView.SCROLL_STATE_IDLE) {
RecyclerView.LayoutManager layoutManager = getLayoutManager();
int visibleItemCount = layoutManager.getChildCount();
diff --git a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerViewAdapter.java b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerViewAdapter.java
index 5f84068..5d22b4e 100644
--- a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerViewAdapter.java
+++ b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LRecyclerViewAdapter.java
@@ -70,7 +70,6 @@ public void addFooterView(View view) {
removeFooterView(getFooterView());
}
mFooterViews.add(view);
- //this.notifyDataSetChanged();
}
/**
diff --git a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LuRecyclerView.java b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LuRecyclerView.java
index f9e790a..8718b4d 100644
--- a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LuRecyclerView.java
+++ b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/recyclerview/LuRecyclerView.java
@@ -21,6 +21,7 @@
*
*/
public class LuRecyclerView extends RecyclerView {
+ private boolean mLoadMoreEnabled = true;
private LScrollListener mLScrollListener;
private OnLoadMoreListener mLoadMoreListener;
private View mEmptyView;
@@ -106,7 +107,9 @@ public void setAdapter(Adapter adapter) {
mWrapAdapter.getInnerAdapter().registerAdapterDataObserver(mDataObserver);
mDataObserver.onChanged();
- mWrapAdapter.addFooterView(mFootView);
+ if(mLoadMoreEnabled) {
+ mWrapAdapter.addFooterView(mFootView);
+ }
}
@@ -197,6 +200,15 @@ public void setEmptyView(View emptyView) {
this.mEmptyView = emptyView;
}
+ public void setLoadMoreEnabled(boolean enabled) {
+ mLoadMoreEnabled = enabled;
+ if (!enabled) {
+ if (mFootView instanceof LoadingFooter) {
+ mWrapAdapter.removeFooterView(mFootView);
+ }
+ }
+ }
+
public void setOnLoadMoreListener(OnLoadMoreListener listener) {
mLoadMoreListener = listener;
}
@@ -285,7 +297,7 @@ public void onScrollStateChanged(int state) {
mLScrollListener.onScrollStateChanged(state);
}
- if (mLoadMoreListener != null) {
+ if (mLoadMoreListener != null && mLoadMoreEnabled) {
if (currentScrollState == RecyclerView.SCROLL_STATE_IDLE || currentScrollState == RecyclerView.SCROLL_STATE_SETTLING) {
RecyclerView.LayoutManager layoutManager = getLayoutManager();
diff --git a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/util/RecyclerViewUtils.java b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/util/RecyclerViewUtils.java
index 21d0319..5c7ae5d 100644
--- a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/util/RecyclerViewUtils.java
+++ b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/util/RecyclerViewUtils.java
@@ -9,7 +9,7 @@
* RecyclerView设置Header/Footer所用到的工具类
* @author Lzx
* @created 2016/9/30 10:36
- *
+ * @deprecated
*/
public class RecyclerViewUtils {
diff --git a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/ArrowRefreshHeader.java b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/ArrowRefreshHeader.java
index 7e3a301..64842c6 100644
--- a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/ArrowRefreshHeader.java
+++ b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/ArrowRefreshHeader.java
@@ -109,12 +109,14 @@ public void setArrowImageView(int resid) {
}
public void setState(int state) {
- if (state == mState) return;
+ if (state == mState)
+ return;
if (state == STATE_REFRESHING) { // 显示进度
mArrowImageView.clearAnimation();
mArrowImageView.setVisibility(View.INVISIBLE);
mProgressBar.setVisibility(View.VISIBLE);
+ smoothScrollTo(mMeasuredHeight);
} else if (state == STATE_DONE) {
mArrowImageView.setVisibility(View.INVISIBLE);
mProgressBar.setVisibility(View.INVISIBLE);
@@ -208,12 +210,9 @@ public boolean releaseAction() {
if (mState == STATE_REFRESHING && height <= mMeasuredHeight) {
//return;
}
- int destHeight = 0; // default: scroll back to dismiss header.
- // is refreshing, just scroll back to show all the header.
- if (mState == STATE_REFRESHING) {
- destHeight = mMeasuredHeight;
+ if (mState != STATE_REFRESHING) {
+ smoothScrollTo(0);
}
- smoothScrollTo(destHeight);
return isOnRefresh;
}
diff --git a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/LoadingMoreFooter.java b/LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/LoadingMoreFooter.java
deleted file mode 100644
index ac34e60..0000000
--- a/LRecyclerview_library/src/main/java/com/github/jdsjlzx/view/LoadingMoreFooter.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.github.jdsjlzx.view;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.TextView;
-
-import com.github.jdsjlzx.R;
-import com.github.jdsjlzx.progressindicator.AVLoadingIndicatorView;
-import com.github.jdsjlzx.recyclerview.ProgressStyle;
-
-
-public class LoadingMoreFooter extends LinearLayout {
-
- private SimpleViewSwitcher progressCon;
- public final static int STATE_LOADING = 0;
- public final static int STATE_COMPLETE = 1;
- public final static int STATE_NOMORE = 2;
- private TextView mText;
-
-
- public LoadingMoreFooter(Context context) {
- super(context);
- initView();
- }
-
- /**
- * @param context
- * @param attrs
- */
- public LoadingMoreFooter(Context context, AttributeSet attrs) {
- super(context, attrs);
- initView();
- }
- public void initView(){
- setGravity(Gravity.CENTER);
- setLayoutParams(new ViewGroup.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
- progressCon = new SimpleViewSwitcher(getContext());
- progressCon.setLayoutParams(new ViewGroup.LayoutParams(
- ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
-
- AVLoadingIndicatorView progressView = new AVLoadingIndicatorView(this.getContext());
- progressView.setIndicatorColor(0xffB5B5B5);
- progressView.setIndicatorId(ProgressStyle.BallSpinFadeLoader);
- progressCon.setView(progressView);
-
- addView(progressCon);
- mText = new TextView(getContext());
- mText.setText("正在加载...");
-
- LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- layoutParams.setMargins( (int)getResources().getDimension(R.dimen.textandiconmargin),0,0,0 );
-
- mText.setLayoutParams(layoutParams);
- addView(mText);
- }
-
- public void setProgressStyle(int style) {
- if(style == ProgressStyle.SysProgress){
- progressCon.setView(new ProgressBar(getContext(), null, android.R.attr.progressBarStyle));
- }else{
- AVLoadingIndicatorView progressView = new AVLoadingIndicatorView(this.getContext());
- progressView.setIndicatorColor(0xffB5B5B5);
- progressView.setIndicatorId(style);
- progressCon.setView(progressView);
- }
- }
-
- public void setState(int state) {
- switch(state) {
- case STATE_LOADING:
- progressCon.setVisibility(View.VISIBLE);
- mText.setText(getContext().getText(R.string.listview_loading));
- this.setVisibility(View.VISIBLE);
- break;
- case STATE_COMPLETE:
- mText.setText(getContext().getText(R.string.listview_loading));
- this.setVisibility(View.GONE);
- break;
- case STATE_NOMORE:
- mText.setText(getContext().getText(R.string.nomore_loading));
- progressCon.setVisibility(View.GONE);
- this.setVisibility(View.VISIBLE);
- break;
- }
-
- }
-}
diff --git a/app/app.iml b/app/app.iml
index f25181b..c1c87a6 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -46,7 +46,6 @@
-
@@ -54,7 +53,6 @@
-
@@ -62,35 +60,26 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
@@ -100,6 +89,7 @@
+
diff --git a/app/src/main/java/com/lzx/demo/ui/LinearLayoutActivity.java b/app/src/main/java/com/lzx/demo/ui/LinearLayoutActivity.java
index 9957e35..3b24f9a 100644
--- a/app/src/main/java/com/lzx/demo/ui/LinearLayoutActivity.java
+++ b/app/src/main/java/com/lzx/demo/ui/LinearLayoutActivity.java
@@ -46,7 +46,7 @@ public void onCreate(Bundle savedInstanceState) {
//init data
ArrayList dataList = new ArrayList<>();
- for (int i = 0; i < 5; i++) {
+ for (int i = 0; i < 16; i++) {
ItemModel itemModel = new ItemModel();
itemModel.title = "item" + i;
dataList.add(itemModel);
@@ -80,12 +80,17 @@ public void onClick(View v) {
mDataAdapter.addAll(dataList);
}
});
- //add a FooterView
- mLRecyclerViewAdapter.addFooterView(sampleFooter);
- //禁止下拉刷新功能
+
+ //禁用下拉刷新功能
mRecyclerView.setPullRefreshEnabled(false);
+ //禁用自动加载更多功能
+ mRecyclerView.setLoadMoreEnabled(false);
+
+ //add a FooterView
+ mLRecyclerViewAdapter.addFooterView(sampleFooter);
+
}
private class DataAdapter extends ListBaseAdapter {
diff --git a/build.gradle b/build.gradle
index 5c33bb9..0b03a4c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.2'
+ classpath 'com.android.tools.build:gradle:2.3.0-alpha2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files