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) {
