Repository: incubator-weex
Updated Branches:
  refs/heads/master aef41c82f -> 6d5992ee5


*[Android] add mergeAttr.


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

Branch: refs/heads/master
Commit: 6d5992ee5c766526ca877027908aada1461c32ca
Parents: 1b73f04
Author: 驱影 <jike....@alibaba-inc.com>
Authored: Tue May 15 18:12:56 2018 +0800
Committer: YorkShen <shenyua...@gmail.com>
Committed: Wed May 16 16:46:56 2018 +0800

----------------------------------------------------------------------
 .../main/java/com/taobao/weex/dom/WXAttr.java   | 47 +++++++++++++-------
 .../weex/ui/action/GraphicActionUpdateAttr.java |  1 +
 2 files changed, 32 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6d5992ee/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java 
b/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java
index ef2b99b..1ff916d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java
+++ b/android/sdk/src/main/java/com/taobao/weex/dom/WXAttr.java
@@ -18,11 +18,14 @@
  */
 package com.taobao.weex.dom;
 
-import static com.taobao.weex.dom.binding.ELUtils.COMPONENT_PROPS;
-import static com.taobao.weex.dom.binding.ELUtils.EXCLUDES_BINDING;
-import static java.lang.Boolean.parseBoolean;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
 
 import android.support.annotation.NonNull;
+import android.support.annotation.UiThread;
 import android.support.v4.util.ArrayMap;
 import android.text.TextUtils;
 import com.taobao.weex.common.Constants;
@@ -35,11 +38,10 @@ import com.taobao.weex.ui.view.listview.WXRecyclerView;
 import com.taobao.weex.utils.WXLogUtils;
 import com.taobao.weex.utils.WXUtils;
 import com.taobao.weex.utils.WXViewUtils;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
+
+import static com.taobao.weex.dom.binding.ELUtils.COMPONENT_PROPS;
+import static com.taobao.weex.dom.binding.ELUtils.EXCLUDES_BINDING;
+import static java.lang.Boolean.parseBoolean;
 
 /**
  * store value of component attribute
@@ -53,6 +55,7 @@ public class WXAttr implements Map<String, Object>,Cloneable {
    * static attrs
    * */
   private @NonNull Map<String, Object> attr;
+  private Map<String, Object> writeAttr;
 
   /**
    * dynamic binding attrs, can be null, only weex use
@@ -401,6 +404,13 @@ public class WXAttr implements Map<String, 
Object>,Cloneable {
 
   @Override
   public Object get(Object key) {
+    Map<String, Object> temp = writeAttr;
+    if (null != temp) {
+      Object obj = temp.get(key);
+      if (null != obj) {
+        return obj;
+      }
+    }
     return attr.get(key);
   }
 
@@ -425,11 +435,11 @@ public class WXAttr implements Map<String, 
Object>,Cloneable {
 
   @Override
   public void putAll(Map<? extends String, ?> map) {
-    // copy on write.
-    Map<String, Object> copyAttr = new ArrayMap<>();
-    copyAttr.putAll(this.attr);
-    copyAttr.putAll(map);
-    this.attr = copyAttr;
+    //this.attr.putAll(map);
+    if (this.writeAttr == null) {
+      this.writeAttr = new ArrayMap<>();
+    }
+    this.writeAttr.putAll(map);
   }
 
   @Override
@@ -471,15 +481,12 @@ public class WXAttr implements Map<String, 
Object>,Cloneable {
     this.mStatement = mStatement;
   }
 
-
-
   public void parseStatements(){
     if(this.attr != null){
        this.attr = filterStatementsFromAttrs(this.attr);
     }
   }
 
-
   /**
    * filter dynamic state ment
    * */
@@ -554,6 +561,14 @@ public class WXAttr implements Map<String, 
Object>,Cloneable {
     this.attr.putAll(attrs);
   }
 
+  @UiThread
+  public void mergeAttr() {
+    if (null != this.writeAttr) {
+      this.attr.putAll(this.writeAttr);
+      this.writeAttr = null;
+    }
+  }
+
   @Override
   public WXAttr clone() {
     WXAttr wxAttr = new WXAttr();

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/6d5992ee/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java
 
b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java
index 64f3fdd..c3482db 100644
--- 
a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java
+++ 
b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionUpdateAttr.java
@@ -47,6 +47,7 @@ public class GraphicActionUpdateAttr extends 
BasicGraphicAction {
     if (component == null) {
       return;
     }
+    component.getAttrs().mergeAttr();
     component.updateAttrs(mAttrs);
   }
 }

Reply via email to