Repository: incubator-weex Updated Branches: refs/heads/master 8a479c681 -> 39704d41e
[WEEX-129][android] Appear Event Be Fired Multi Times And Event not watch be fired Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/39704d41 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/39704d41 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/39704d41 Branch: refs/heads/master Commit: 39704d41ed64c9b7b677b8541ffb20d08e27b75f Parents: 8a479c6 Author: jianbai.gbj <[email protected]> Authored: Fri Nov 17 15:01:19 2017 +0800 Committer: gurisxie <[email protected]> Committed: Mon Nov 20 18:29:08 2017 +0800 ---------------------------------------------------------------------- .../com/taobao/weex/ui/component/WXComponent.java | 15 ++++----------- .../com/taobao/weex/ui/component/WXVContainer.java | 11 +++++++---- .../list/template/WXRecyclerTemplateList.java | 6 +++--- 3 files changed, 14 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/39704d41/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java index 9dc2091..6f75866 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java @@ -1661,21 +1661,14 @@ public abstract class WXComponent<T extends View> implements IWXObject, IWXActi } public void notifyAppearStateChange(String wxEventType,String direction){ - if(containsEvent(Constants.Event.APPEAR) || containsEvent(Constants.Event.DISAPPEAR)) { - Map<String, Object> params = new HashMap<>(); - params.put("direction", direction); - fireEvent(wxEventType, params); - } - } - - public void notifyWatchAppearDisappearEvent(String wxEventType,String direction){ if(containsEvent(wxEventType)) { - Map<String, Object> params = new HashMap<>(); - params.put("direction", direction); - fireEvent(wxEventType, params); + Map<String, Object> params = new HashMap<>(); + params.put("direction", direction); + fireEvent(wxEventType, params); } } + public boolean isUsing() { return isUsing; } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/39704d41/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java index 62b667b..174a3c2 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXVContainer.java @@ -355,11 +355,14 @@ public abstract class WXVContainer<T extends ViewGroup> extends WXComponent<T> { if(getHostView()==null || mChildren==null){ return; } - for(WXComponent component:mChildren){ - if(component.getHostView()!=null && !(component.getHostView().getVisibility()==View.VISIBLE)){ - wxEventType= Constants.Event.DISAPPEAR; + //appear should not notify child + if(getDomObject().getAttrs().containsKey("appearNotifyChild")){ + for(WXComponent component:mChildren){ + if(component.getHostView()!=null && !(component.getHostView().getVisibility()==View.VISIBLE)){ + wxEventType= Constants.Event.DISAPPEAR; + } + component.notifyAppearStateChange(wxEventType,direction); } - component.notifyAppearStateChange(wxEventType,direction); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/39704d41/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java ---------------------------------------------------------------------- diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java index 2f3baee..a5f61b7 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/template/WXRecyclerTemplateList.java @@ -1358,7 +1358,7 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp int key = childLisener.getHostView().hashCode(); if(appear){ if(!componentDisAppearList.containsKey(key)){ - childLisener.notifyWatchAppearDisappearEvent(Constants.Event.APPEAR, direction); + childLisener.notifyAppearStateChange(Constants.Event.APPEAR, direction); List<Object> eventArgs = null; if(childLisener.getDomObject().getEvents() != null && childLisener.getDomObject().getEvents().getEventBindingArgsValues() != null @@ -1369,7 +1369,7 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp } }else{ if(componentDisAppearList.containsKey(key)){ - childLisener.notifyWatchAppearDisappearEvent(Constants.Event.DISAPPEAR, direction); + childLisener.notifyAppearStateChange(Constants.Event.DISAPPEAR, direction); componentDisAppearList.remove(key); } } @@ -1407,7 +1407,7 @@ public class WXRecyclerTemplateList extends WXVContainer<BounceRecyclerView> imp Set<Map.Entry<Integer, List<Object>>> eventWatcherEntries = eventWatchers.entrySet(); for(Map.Entry<Integer, List<Object>> eventWatcherEntry : eventWatcherEntries){ events.putEventBindingArgsValue(Constants.Event.DISAPPEAR, eventWatcherEntry.getValue()); - component.notifyWatchAppearDisappearEvent(Constants.Event.DISAPPEAR, direction); + component.notifyAppearStateChange(Constants.Event.DISAPPEAR, direction); } eventWatchers.clear(); }
