Skip to content

Commit

Permalink
优化代码
Browse files Browse the repository at this point in the history
  • Loading branch information
jdsjlzx committed Dec 14, 2016
1 parent 413eee3 commit c52f642
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 68 deletions.
14 changes: 7 additions & 7 deletions LRecyclerview_library/LRecyclerview_library.iml
Original file line number Diff line number Diff line change
Expand Up @@ -63,20 +63,20 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/java" 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/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/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" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ public void onScrollStateChanged(int state) {

if (mLoadMoreListener != null && mLoadMoreEnabled) {

if (currentScrollState == RecyclerView.SCROLL_STATE_IDLE || currentScrollState == RecyclerView.SCROLL_STATE_SETTLING) {
if (currentScrollState == RecyclerView.SCROLL_STATE_IDLE) {
RecyclerView.LayoutManager layoutManager = getLayoutManager();
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ public class LuRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.Vie
private ArrayList<View> mHeaderViews = new ArrayList<>();
private ArrayList<View> mFooterViews = new ArrayList<>();

private SpanSizeLookup mSpanSizeLookup;


public LuRecyclerViewAdapter(RecyclerView.Adapter innerAdapter) {
this.mInnerAdapter = innerAdapter;
Expand Down Expand Up @@ -249,8 +251,13 @@ public void onAttachedToRecyclerView(RecyclerView recyclerView) {
gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return (isHeader(position) || isFooter(position))
? gridManager.getSpanCount() : 1;
if (mSpanSizeLookup == null) {
return (isHeader(position) || isFooter(position))
? gridManager.getSpanCount() : 1;
} else {
return (isHeader(position) || isFooter(position))
? gridManager.getSpanCount() : mSpanSizeLookup.getSpanSize(gridManager, (position - (getHeaderViewsCount() + 1)));
}
}
});
}
Expand Down Expand Up @@ -324,4 +331,15 @@ public void setOnItemLongClickListener(OnItemLongClickListener itemLongClickList
this.mOnItemLongClickListener = itemLongClickListener;
}

public interface SpanSizeLookup {
int getSpanSize(GridLayoutManager gridLayoutManager, int position);
}

/**
* @param spanSizeLookup
* only used to GridLayoutManager
*/
public void setSpanSizeLookup(SpanSizeLookup spanSizeLookup) {
this.mSpanSizeLookup = spanSizeLookup;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class LuRecyclerViewStateUtils {
* @param errorListener FooterView处于Error状态时的点击事件
*/
public static void setFooterViewState(Activity instance, RecyclerView recyclerView, int pageSize, LoadingFooter.State state, View.OnClickListener errorListener) {
if(instance==null || instance.isFinishing()) {
if (instance == null || instance.isFinishing()) {
return;
}

Expand All @@ -35,25 +35,25 @@ public static void setFooterViewState(Activity instance, RecyclerView recyclerVi
return;
}

LuRecyclerViewAdapter LuRecyclerViewAdapter = (LuRecyclerViewAdapter) outerAdapter;
LuRecyclerViewAdapter luRecyclerViewAdapter = (LuRecyclerViewAdapter) outerAdapter;

//只有一页的时候,就别加什么FooterView了
if (LuRecyclerViewAdapter.getInnerAdapter().getItemCount() < pageSize) {
//只有一页,不显示FooterView
if (luRecyclerViewAdapter.getInnerAdapter().getItemCount() < pageSize) {
return;
}

LoadingFooter footerView;
//已经有footerView了
if (LuRecyclerViewAdapter.getFooterViewsCount() > 0) {
footerView = (LoadingFooter) LuRecyclerViewAdapter.getFooterView();
if (luRecyclerViewAdapter.getFooterViewsCount() > 0) {
footerView = (LoadingFooter) luRecyclerViewAdapter.getFooterView();
footerView.setState(state);
footerView.setVisibility(View.VISIBLE);
if (state == LoadingFooter.State.NetWorkError) {
footerView.setOnClickListener(errorListener);
}

}

recyclerView.scrollToPosition(luRecyclerViewAdapter.getItemCount() - 1);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class RecyclerViewStateUtils {
* @param errorListener FooterView处于Error状态时的点击事件
*/
public static void setFooterViewState(Activity instance, RecyclerView recyclerView, int pageSize, LoadingFooter.State state, View.OnClickListener errorListener) {
if(instance==null || instance.isFinishing()) {
if (instance == null || instance.isFinishing()) {
return;
}

Expand All @@ -38,7 +38,7 @@ public static void setFooterViewState(Activity instance, RecyclerView recyclerVi

LRecyclerViewAdapter lRecyclerViewAdapter = (LRecyclerViewAdapter) outerAdapter;

//只有一页的时候,就别加什么FooterView了
//只有一页,不显示FooterView
if (lRecyclerViewAdapter.getInnerAdapter().getItemCount() < pageSize) {
return;
}
Expand All @@ -61,53 +61,6 @@ public static void setFooterViewState(Activity instance, RecyclerView recyclerVi

}

/**
* 设置LRecyclerViewAdapter的FooterView State
*
* @param instance context
* @param recyclerView recyclerView
* @param pageSize 分页展示时,recyclerView每一页的数量
* @param state FooterView State
* @param errorListener FooterView处于Error状态时的点击事件
*/
public static void setFooterViewState2(Activity instance, RecyclerView recyclerView, int pageSize, LoadingFooter.State state, View.OnClickListener errorListener) {

if(instance==null || instance.isFinishing()) {
return;
}

RecyclerView.Adapter outerAdapter = recyclerView.getAdapter();

if (outerAdapter == null || !(outerAdapter instanceof LRecyclerViewAdapter)) {
return;
}

LRecyclerViewAdapter lRecyclerViewAdapter = (LRecyclerViewAdapter) outerAdapter;

LoadingFooter footerView;

//已经有footerView了
if (lRecyclerViewAdapter.getFooterViewsCount() > 0) {
footerView = (LoadingFooter) lRecyclerViewAdapter.getFooterView();
footerView.setState(state);

if (state == LoadingFooter.State.NetWorkError) {
footerView.setOnClickListener(errorListener);
}
recyclerView.scrollToPosition(0);
} else {
footerView = new LoadingFooter(instance);
footerView.setState(state);

if (state == LoadingFooter.State.NetWorkError) {
footerView.setOnClickListener(errorListener);
}

lRecyclerViewAdapter.addFooterView(footerView);
recyclerView.scrollToPosition(0);
}
}

/**
* 获取当前RecyclerView.FooterView的状态
*
Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
<activity android:name=".ui.NestRecyclerViewActivity" />
<activity android:name=".ui.Nest2RecyclerViewActivity" />
<activity android:name=".ui.BannerHeaderLayoutActivity" />
<activity android:name=".ui.ListDragMenuActivity" />
</application>

</manifest>
4 changes: 2 additions & 2 deletions app/src/main/java/com/lzx/demo/ui/SwipeMenuActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@

public class SwipeMenuActivity extends AppCompatActivity {

private static final Class<?>[] ACTIVITY = {SwipeDeleteActivity.class, };
private static final String[] TITLE = {"SwipeDeleteActivity", };
private static final Class<?>[] ACTIVITY = {SwipeDeleteActivity.class, ListDragMenuActivity.class};
private static final String[] TITLE = {"SwipeDeleteActivity", "ListDragMenuActivity"};

private RecyclerView mRecyclerView = null;

Expand Down

0 comments on commit c52f642

Please sign in to comment.