Repository: incubator-weex
Updated Branches:
  refs/heads/master cf82fe15e -> 3d9502994 (forced update)


[WEEX-186][android]  List Sticky Header Keep When Data Clear
close #968


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/3d950299
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/3d950299
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/3d950299

Branch: refs/heads/master
Commit: 3d95029940791f7716ebeeba7c8281511ba388c2
Parents: 05ce0e4
Author: jianbai.gbj <[email protected]>
Authored: Fri Jan 5 18:08:08 2018 +0800
Committer: acton393 <[email protected]>
Committed: Wed Jan 10 22:04:46 2018 +0800

----------------------------------------------------------------------
 .../weex/ui/component/list/BasicListComponent.java    | 14 ++++++++++++--
 .../weex/ui/component/list/StickyHeaderHelper.java    | 11 +++++++++++
 .../com/taobao/weex/ui/component/list/WXCell.java     |  6 ++++--
 .../ui/view/refresh/wrapper/BounceRecyclerView.java   |  4 +++-
 4 files changed, 30 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3d950299/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
index da2105e..5d86178 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
@@ -56,6 +56,7 @@ import com.taobao.weex.ui.component.Scrollable;
 import com.taobao.weex.ui.component.WXBaseRefresh;
 import com.taobao.weex.ui.component.WXComponent;
 import com.taobao.weex.ui.component.WXComponentProp;
+import com.taobao.weex.ui.component.WXHeader;
 import com.taobao.weex.ui.component.WXLoading;
 import com.taobao.weex.ui.component.WXRefresh;
 import com.taobao.weex.ui.component.WXVContainer;
@@ -67,6 +68,7 @@ import 
com.taobao.weex.ui.view.listview.adapter.IRecyclerAdapterListener;
 import com.taobao.weex.ui.view.listview.adapter.ListBaseViewHolder;
 import com.taobao.weex.ui.view.listview.adapter.RecyclerViewBaseAdapter;
 import com.taobao.weex.ui.view.listview.adapter.WXRecyclerViewOnScrollListener;
+import com.taobao.weex.ui.view.refresh.wrapper.BounceRecyclerView;
 import com.taobao.weex.utils.WXLogUtils;
 import com.taobao.weex.utils.WXResourceUtils;
 import com.taobao.weex.utils.WXUtils;
@@ -348,6 +350,10 @@ public abstract class BasicListComponent<T extends 
ViewGroup & ListComponentView
   @Override
   public void unbindStickStyle(WXComponent component) {
     stickyHelper.unbindStickStyle(component, mStickyMap);
+    WXHeader cell = (WXHeader) findTypeParent(component, WXHeader.class);
+    if(cell != null && getHostView() != null) {
+      getHostView().notifyStickyRemove(cell);
+    }
   }
 
   private
@@ -607,8 +613,12 @@ public abstract class BasicListComponent<T extends 
ViewGroup & ListComponentView
         }
     }
 
-    if(currentStickyPos>=0){
-      bounceRecyclerView.updateStickyView(currentStickyPos);
+    if(currentStickyPos >= 0){
+        bounceRecyclerView.updateStickyView(currentStickyPos);
+    }else{
+      if(bounceRecyclerView instanceof BounceRecyclerView){
+        ((BounceRecyclerView) 
bounceRecyclerView).getStickyHeaderHelper().clearStickyHeaders();
+      }
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3d950299/android/sdk/src/main/java/com/taobao/weex/ui/component/list/StickyHeaderHelper.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/StickyHeaderHelper.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/StickyHeaderHelper.java
index cedd86c..5d744c6 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/StickyHeaderHelper.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/StickyHeaderHelper.java
@@ -30,6 +30,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * Created by sospartan on 17/03/2017.
@@ -165,6 +166,16 @@ public class StickyHeaderHelper {
     }
   }
 
+  public void  clearStickyHeaders(){
+      if(mHeaderViews.size() <= 0){
+        return;
+      }
+      Set<String> keys = mHeaderViews.keySet();
+      for(String key : keys){
+        notifyStickyRemove(mHeaderComps.get(key));
+      }
+  }
+
 
   private void changeFrontStickyVisible(){
     if(mHeaderViews.size() <= 0){

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3d950299/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
index cf3de07..36909fa 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
@@ -180,8 +180,10 @@ public class WXCell extends WidgetContainer<WXFrameLayout> 
{
             if(mHeadView.getParent() != null){
                 ((ViewGroup)mHeadView.getParent()).removeView(mHeadView);
             }
-            getHostView().removeView(mTempStickyView);
-            getHostView().addView(mHeadView);
+            if(getHostView() != null) {
+                getHostView().removeView(mTempStickyView);
+                getHostView().addView(mHeadView);
+            }
             mHeadView.setTranslationX(0);
             mHeadView.setTranslationY(0);
         }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/3d950299/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
index 870ed57..6f17584 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/view/refresh/wrapper/BounceRecyclerView.java
@@ -116,7 +116,9 @@ public class BounceRecyclerView extends 
BaseBounceView<WXRecyclerView> implement
     mStickyHeaderHelper.notifyStickyRemove(compToRemove);
   }
 
-
+  public StickyHeaderHelper getStickyHeaderHelper() {
+    return mStickyHeaderHelper;
+  }
 
   @Override
   public void registerGestureListener(@Nullable WXGesture wxGesture) {

Reply via email to