Skip to content

Commit

Permalink
解决issues67提到的问题。
Browse files Browse the repository at this point in the history
  • Loading branch information
jdsjlzx committed Dec 1, 2016
1 parent 4437b6f commit f29f782
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 168 deletions.
37 changes: 8 additions & 29 deletions LRecyclerview_library/LRecyclerview_library.iml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
<option name="PROJECT_TYPE" value="1" />
</configuration>
</facet>
</component>
Expand Down Expand Up @@ -46,63 +47,41 @@
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-core/2.2.2/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-idling-resource/2.2.2/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test/exposed-instrumentation-api-publish/0.5/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test/rules/0.5/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test/runner/0.5/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-compat/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-core-ui/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-core-utils/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-fragment/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-media-compat/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/transition/25.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
Expand Down
2 changes: 1 addition & 1 deletion LRecyclerview_library/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
group=com.github.jdsdjlzx


android {
compileSdkVersion 25
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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);
}
Expand All @@ -124,7 +124,10 @@ public void setAdapter(Adapter adapter) {
mDataObserver.onChanged();

mWrapAdapter.setRefreshHeader(mRefreshHeader);
mWrapAdapter.addFooterView(mFootView);

if(mLoadMoreEnabled) {
mWrapAdapter.addFooterView(mFootView);
}

}

Expand All @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -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();
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ public void addFooterView(View view) {
removeFooterView(getFooterView());
}
mFooterViews.add(view);
//this.notifyDataSetChanged();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
*
*/
public class LuRecyclerView extends RecyclerView {
private boolean mLoadMoreEnabled = true;
private LScrollListener mLScrollListener;
private OnLoadMoreListener mLoadMoreListener;
private View mEmptyView;
Expand Down Expand Up @@ -106,7 +107,9 @@ public void setAdapter(Adapter adapter) {
mWrapAdapter.getInnerAdapter().registerAdapterDataObserver(mDataObserver);
mDataObserver.onChanged();

mWrapAdapter.addFooterView(mFootView);
if(mLoadMoreEnabled) {
mWrapAdapter.addFooterView(mFootView);
}

}

Expand Down Expand Up @@ -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;
}
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* RecyclerView设置Header/Footer所用到的工具类
* @author Lzx
* @created 2016/9/30 10:36
*
* @deprecated
*/
public class RecyclerViewUtils {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
}
Expand Down

This file was deleted.

Loading

0 comments on commit f29f782

Please sign in to comment.