From 278a692c5c1e2fa3ed14b1fd9497851b3e49c1b3 Mon Sep 17 00:00:00 2001 From: Oscar Date: Thu, 19 Apr 2018 14:22:39 +0800 Subject: [PATCH] fix --- README.md | 2 +- .../decoration/DivideItemDecoration.java | 9 ++++++++- .../decoration/GroupHeaderItemDecoration.java | 17 ++++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1df5166..d2bb9eb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ allprojects { **Step 2. 添加项目依赖** ``` gradle dependencies { - compile 'com.github.Othershe:GroupIndexLib:1.0.0' + compile 'com.github.Othershe:GroupIndexLib:1.0.1' } ``` **Step 3.设置ItemDecoration** diff --git a/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/DivideItemDecoration.java b/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/DivideItemDecoration.java index 3a99557..3f58e93 100644 --- a/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/DivideItemDecoration.java +++ b/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/DivideItemDecoration.java @@ -27,6 +27,10 @@ public DivideItemDecoration() { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); + if (Utils.listIsEmpty(tags)) { + return; + } + RecyclerView.LayoutManager manager = parent.getLayoutManager(); //只处理线性垂直类型的列表 @@ -45,11 +49,14 @@ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, Recycle @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDraw(c, parent, state); + if (Utils.listIsEmpty(tags)) { + return; + } for (int i = 0; i < parent.getChildCount(); i++) { View view = parent.getChildAt(i); int position = parent.getChildAdapterPosition(view); //和getItemOffsets()里的条件判断类似 - if (!Utils.listIsEmpty(tags) && (position + 1) < tags.size() && tags.get(position).equals(tags.get(position + 1))) { + if ((position + 1) < tags.size() && tags.get(position).equals(tags.get(position + 1))) { drawDivide(c, parent, view); } } diff --git a/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/GroupHeaderItemDecoration.java b/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/GroupHeaderItemDecoration.java index 6a5a1f7..ca22115 100644 --- a/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/GroupHeaderItemDecoration.java +++ b/groupindexlib/src/main/java/com/othershe/groupindexlib/decoration/GroupHeaderItemDecoration.java @@ -45,6 +45,10 @@ public GroupHeaderItemDecoration(Context context) { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); + if (Utils.listIsEmpty(tags)) { + return; + } + RecyclerView.LayoutManager manager = parent.getLayoutManager(); //只处理线性垂直类型的列表 @@ -55,7 +59,7 @@ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, Recycle int position = parent.getChildAdapterPosition(view); //ItemView的position==0 或者 当前itemView的data的tag和上一个ItemView的不相等,则为当前itemView设置top 偏移量 - if (!Utils.listIsEmpty(tags) && (position == 0 || !tags.get(position).equals(tags.get(position - 1)))) { + if (position == 0 || !tags.get(position).equals(tags.get(position - 1))) { outRect.set(0, groupHeaderHeight, 0, 0); } } @@ -63,12 +67,15 @@ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, Recycle @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDraw(c, parent, state); + if (Utils.listIsEmpty(tags)) { + return; + } for (int i = 0; i < parent.getChildCount(); i++) { View view = parent.getChildAt(i); int position = parent.getChildAdapterPosition(view); String tag = tags.get(position); //和getItemOffsets()里的条件判断类似,开始绘制分组的GroupHeader - if (!Utils.listIsEmpty(tags) && (position == 0 || !tag.equals(tags.get(position - 1)))) { + if (position == 0 || !tag.equals(tags.get(position - 1))) { if (drawItemDecorationListener == null) { drawGroupHeader(c, parent, view, tag); } else { @@ -81,6 +88,10 @@ public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { @Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDrawOver(c, parent, state); + if (Utils.listIsEmpty(tags)) { + return; + } + if (!show) { return; } @@ -91,7 +102,7 @@ public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) View view = parent.findViewHolderForAdapterPosition(position).itemView; //当前ItemView的data的tag和下一个ItemView的不相等,则代表将要重新绘制悬停的GroupHeader boolean flag = false; - if (!Utils.listIsEmpty(tags) && (position + 1) < tags.size() && !tag.equals(tags.get(position + 1))) { + if ((position + 1) < tags.size() && !tag.equals(tags.get(position + 1))) { //如果第一个可见ItemView的底部坐标小于groupHeaderHeight,则执行Canvas垂直位移操作 if (view.getBottom() <= groupHeaderHeight) { c.save();