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();
             }

Reply via email to