Repository: incubator-weex
Updated Branches:
  refs/heads/master c6d99036d -> e74c60cd3


[WEEX-408][android] measure func not right recyclelist update measure function 
and support horizontal


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

Branch: refs/heads/master
Commit: e74c60cd3ca9242143c0d83bfd22d4dcceda3805
Parents: c6d9903
Author: jianbai.gbj <[email protected]>
Authored: Thu May 31 11:59:32 2018 +0800
Committer: jianbai.gbj <[email protected]>
Committed: Thu May 31 11:59:32 2018 +0800

----------------------------------------------------------------------
 .../src/main/java/com/taobao/weex/WXSDKInstance.java | 10 +++++-----
 .../main/java/com/taobao/weex/bridge/WXBridge.java   |  4 ++--
 .../java/com/taobao/weex/bridge/WXBridgeManager.java |  6 +++---
 .../main/java/com/taobao/weex/common/IWXBridge.java  |  2 +-
 .../src/main/java/com/taobao/weex/dom/WXAttr.java    |  2 +-
 .../com/taobao/weex/ui/component/WXComponent.java    |  4 +++-
 .../list/template/WXRecyclerTemplateList.java        | 15 +++++++--------
 .../android/bridge/impl/bridge_impl_android.cpp      |  7 +++----
 .../Source/android/bridge/impl/bridge_impl_android.h |  2 +-
 .../core/layout/measure_func_adapter_impl_android.h  |  2 +-
 10 files changed, 27 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java 
b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index 114f084..fba31d6 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -189,7 +189,7 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
   private ComponentObserver mComponentObserver;
   private Map<String, GraphicActionAddElement> inactiveAddElementAction = new 
ArrayMap<>();
 
-  private Map<String, ContentBoxMeasurement> mContentBoxMeasurements = new 
ArrayMap<>();
+  private Map<Long, ContentBoxMeasurement> mContentBoxMeasurements = new 
ArrayMap<>();
 
   /**
    * set make weexCore run in single process mode
@@ -1946,11 +1946,11 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
     }
   }
 
-  public void addContentBoxMeasurement(String ref, ContentBoxMeasurement 
contentBoxMeasurement) {
-    mContentBoxMeasurements.put(ref, contentBoxMeasurement);
+  public void addContentBoxMeasurement(long renderObjectPtr, 
ContentBoxMeasurement contentBoxMeasurement) {
+    mContentBoxMeasurements.put(renderObjectPtr, contentBoxMeasurement);
   }
 
-  public ContentBoxMeasurement getContentBoxMeasurement(String ref) {
-    return mContentBoxMeasurements.get(ref);
+  public ContentBoxMeasurement getContentBoxMeasurement(long renderObjectPtr) {
+    return mContentBoxMeasurements.get(renderObjectPtr);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java 
b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
index 6315a4f..cc2d1a9 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
@@ -478,10 +478,10 @@ public class WXBridge implements IWXBridge {
   }
 
   @Override
-  public ContentBoxMeasurement getMeasurementFunc(String instanceId, String 
ref) {
+  public ContentBoxMeasurement getMeasurementFunc(String instanceId, long 
renderObjectPtr) {
     ContentBoxMeasurement obj = null;
     try {
-      obj = WXBridgeManager.getInstance().getMeasurementFunc(instanceId, ref);
+      obj = WXBridgeManager.getInstance().getMeasurementFunc(instanceId, 
renderObjectPtr);
     } catch (Throwable e) {
       if (WXEnvironment.isApkDebugable()) {
         WXLogUtils.e(TAG, "getMeasurementFunc throw exception:" + 
e.getMessage());

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java 
b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index 42f96fb..58b18a0 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -2605,15 +2605,15 @@ public class WXBridgeManager implements Callback, 
BactchExecutor {
     return IWXBridge.INSTANCE_RENDERING;
   }
 
-  public ContentBoxMeasurement getMeasurementFunc(String instanceId, String 
ref) {
+  public ContentBoxMeasurement getMeasurementFunc(String instanceId, long 
renderObjectPtr) {
     ContentBoxMeasurement contentBoxMeasurement = null;
     WXSDKInstance instance = 
WXSDKManager.getInstance().getSDKInstance(instanceId);
     if (instance != null) {
-      contentBoxMeasurement = instance.getContentBoxMeasurement(ref);
+      contentBoxMeasurement = 
instance.getContentBoxMeasurement(renderObjectPtr);
     }
     return contentBoxMeasurement;
   }
-
+  
   public void bindMeasurementToRenderObject(long ptr){
     mWXBridge.bindMeasurementToRenderObject(ptr);
   }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java 
b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
index 56c7c8e..25821e3 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
@@ -154,7 +154,7 @@ public interface IWXBridge extends IWXObject {
 
   int callHasTransitionPros(String instanceId, String ref, HashMap<String, 
String> styles);
 
-  ContentBoxMeasurement getMeasurementFunc(String instanceId, String ref);
+  ContentBoxMeasurement getMeasurementFunc(String instanceId, long 
renderObjectPtr);
 
   void bindMeasurementToRenderObject(long ptr);
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/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 1ff916d..000db30 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
@@ -261,7 +261,7 @@ public class WXAttr implements Map<String, 
Object>,Cloneable {
   public int getOrientation() {
     String direction = getScrollDirection();
     if(!TextUtils.isEmpty(direction)){
-      if(direction.equals(Constants.Value.HORIZONTAL.equals(direction))){
+      if(direction.equals(Constants.Value.HORIZONTAL)){
         return Constants.Orientation.HORIZONTAL;
       }
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/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 632f716..3c15cd5 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
@@ -210,6 +210,8 @@ public abstract class WXComponent<T extends View> extends 
WXBasicComponent imple
     }
   }
 
+
+
   @Override
   protected final void bindComponent(WXComponent component) {
     super.bindComponent(component);
@@ -222,7 +224,7 @@ public abstract class WXComponent<T extends View> extends 
WXBasicComponent imple
 
   protected final void setContentBoxMeasurement(final ContentBoxMeasurement 
contentBoxMeasurement) {
     this.contentBoxMeasurement = contentBoxMeasurement;
-    mInstance.addContentBoxMeasurement(getRef(), contentBoxMeasurement);
+    mInstance.addContentBoxMeasurement(getRenderObjectPtr(), 
contentBoxMeasurement);
     
WXBridgeManager.getInstance().bindMeasurementToRenderObject(getRenderObjectPtr());
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/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 3375500..70d135e 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
@@ -829,14 +829,13 @@ public class WXRecyclerTemplateList extends 
WXVContainer<BounceRecyclerView> imp
 
     @WXComponentProp(name = Constants.Name.SCROLL_DIRECTION)
     public void setScrollDirection(String direction){
-        // TODO
-//        if(orientation != mDomObject.getOrientation()) {
-//            orientation = mDomObject.getOrientation();
-//            updateRecyclerAttr();
-//            WXRecyclerView wxRecyclerView = getHostView().getInnerView();
-//            wxRecyclerView.initView(getContext(), 
mLayoutType,mColumnCount,mColumnGap, getOrientation());
-//
-//        }
+        if(orientation != getAttrs().getOrientation()) {
+            orientation = getAttrs().getOrientation();
+            updateRecyclerAttr();
+            WXRecyclerView wxRecyclerView = getHostView().getInnerView();
+            wxRecyclerView.initView(getContext(), 
mLayoutType,mColumnCount,mColumnGap, getOrientation());
+
+        }
     }
 
     @WXComponentProp(name = Constants.Name.COLUMN_WIDTH)

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp 
b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
index 634cf56..6cea477 100644
--- a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
@@ -916,15 +916,14 @@ namespace WeexCore {
     env->CallVoidMethod(jWMThis, jDispatchMeaasge, jClientId, jVmId, jData, 
jCallback);
   }
 
-  jobject Bridge_Impl_Android::getMeasureFunc(const char* pageId, const char* 
ref) {
+  jobject Bridge_Impl_Android::getMeasureFunc(const char* pageId, jlong 
renderObjectPtr) {
     JNIEnv *env = getJNIEnv();
     jstring jPageId = getKeyFromCache(env, pageId);
-    jstring jRef = getKeyFromCache(env, ref);
     if (jCallGetMeasurementMethodId == NULL) {
       jCallGetMeasurementMethodId = env->GetMethodID(jBridgeClazz,
                                                      "getMeasurementFunc",
-                                                     
"(Ljava/lang/String;Ljava/lang/String;)Lcom/taobao/weex/layout/ContentBoxMeasurement;");
+                                                     
"(Ljava/lang/String;J)Lcom/taobao/weex/layout/ContentBoxMeasurement;");
     }
-    return env->CallObjectMethod(jThis, jCallGetMeasurementMethodId, jPageId, 
jRef);
+    return env->CallObjectMethod(jThis, jCallGetMeasurementMethodId, jPageId, 
renderObjectPtr);
   }
 } //end WeexCore

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/weex_core/Source/android/bridge/impl/bridge_impl_android.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.h 
b/weex_core/Source/android/bridge/impl/bridge_impl_android.h
index 72d14b5..825c47c 100644
--- a/weex_core/Source/android/bridge/impl/bridge_impl_android.h
+++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.h
@@ -133,7 +133,7 @@ namespace WeexCore {
 
     void handleDispatchMessage(jstring jClientId, jstring jVmId, jbyteArray 
jData, jstring jCallback);
 
-    jobject getMeasureFunc(const char* pageId, const char* ref);
+    jobject getMeasureFunc(const char* pageId, jlong renderObjectPtr);
   };
 } //end WeexCore
 #endif //BridgeAndroid_h
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/e74c60cd/weex_core/Source/core/layout/measure_func_adapter_impl_android.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/layout/measure_func_adapter_impl_android.h 
b/weex_core/Source/core/layout/measure_func_adapter_impl_android.h
index 162df29..1795c78 100644
--- a/weex_core/Source/core/layout/measure_func_adapter_impl_android.h
+++ b/weex_core/Source/core/layout/measure_func_adapter_impl_android.h
@@ -89,7 +89,7 @@ namespace WeexCore {
       if (!node->haveMeasureFunc()) {
         return nullptr;
       }
-      return Bridge_Impl_Android::getInstance()->getMeasureFunc(((RenderObject 
*) node)->PageId().c_str(), ((RenderObject *) node)->Ref().c_str());
+      return Bridge_Impl_Android::getInstance()->getMeasureFunc(((RenderObject 
*) node)->PageId().c_str(), convert_render_object_to_long(node));
     }
   };
 }

Reply via email to