You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/03/03 03:55:12 UTC

[2/7] incubator-weex git commit: * [android] add recycled attribute to ViewHold to avoid unusefully bindData

* [android] add recycled attribute to ViewHold to avoid unusefully bindData


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

Branch: refs/heads/0.11-dev
Commit: 5525f899d7263b805f41d3fc48eb917c7ecf95b9
Parents: 747da07
Author: zshshr <zh...@gmail.com>
Authored: Thu Mar 2 17:13:21 2017 +0800
Committer: zshshr <zh...@gmail.com>
Committed: Thu Mar 2 17:13:21 2017 +0800

----------------------------------------------------------------------
 .../ui/component/list/BasicListComponent.java   |  7 +-
 .../listview/adapter/ListBaseViewHolder.java    | 92 +++++++++++++-------
 2 files changed, 63 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5525f899/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 9708606..439b748 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
@@ -421,7 +421,7 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
             if (holder != null
                 && holder.getComponent() != null
                 && !holder.getComponent().isUsing()) {
-              holder.getComponent().recycled();
+               holder.recycled();
             }
           }
           recycleViewList.clear();
@@ -855,8 +855,9 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
     }
 
     if (holder.getComponent() != null && holder.getComponent() instanceof WXCell) {
-      holder.getComponent().bindData(component);
-//              holder.getComponent().refreshData(component);
+      if(holder.isRecycled()) {
+        holder.bindData(component);
+      }
     }
 
   }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5525f899/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/adapter/ListBaseViewHolder.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/adapter/ListBaseViewHolder.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/adapter/ListBaseViewHolder.java
index e78c10a..a689d07 100755
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/adapter/ListBaseViewHolder.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/listview/adapter/ListBaseViewHolder.java
@@ -208,6 +208,7 @@ import android.support.v7.widget.RecyclerView;
 import android.view.View;
 
 import com.taobao.weex.ui.component.WXComponent;
+import com.taobao.weex.utils.WXLogUtils;
 
 import java.lang.ref.WeakReference;
 
@@ -218,38 +219,63 @@ import java.lang.ref.WeakReference;
  * From View to ViewHolder, this is done by set {@link android.view.ViewGroup.LayoutParams} to View.
  */
 public class ListBaseViewHolder extends RecyclerView.ViewHolder {
-  private int mViewType;
-  private WeakReference<WXComponent> mComponent;
-
-  public ListBaseViewHolder(WXComponent component, int viewType) {
-    super(component.getHostView());
-    mViewType = viewType;
-    mComponent = new WeakReference(component);
-  }
-  public ListBaseViewHolder(View view, int viewType) {
-    super(view);
-    mViewType = viewType;
-  }
-
-
-  public boolean canRecycled(){
-    if (mComponent!=null && mComponent.get() != null) {
-        return mComponent.get().canRecycled();
+    private int mViewType;
+
+
+    private boolean isRecycled = true;
+    private WeakReference<WXComponent> mComponent;
+
+    public ListBaseViewHolder(WXComponent component, int viewType) {
+        super(component.getHostView());
+        mViewType = viewType;
+        mComponent = new WeakReference(component);
+    }
+
+    public ListBaseViewHolder(View view, int viewType) {
+        super(view);
+        mViewType = viewType;
+    }
+
+    public boolean isRecycled() {
+        return isRecycled;
+    }
+
+    public void recycled() {
+        if (mComponent != null && mComponent.get() != null) {
+            mComponent.get().recycled();
+            isRecycled = true;
+
+        }
+    }
+
+    public void bindData(WXComponent component) {
+        if (mComponent != null && mComponent.get() != null) {
+            mComponent.get().bindData(component);
+            isRecycled = false;
+        }
+    }
+
+    public boolean canRecycled() {
+        if (mComponent != null && mComponent.get() != null) {
+            return mComponent.get().canRecycled();
+        }
+        return true;
+    }
+
+    public View getView() {
+        return itemView;
+    }
+
+    public int getViewType() {
+        return mViewType;
+    }
+
+    public void setComponentUsing(boolean using) {
+        if (mComponent != null && mComponent.get() != null)
+            mComponent.get().setUsing(using);
+    }
+
+    public WXComponent getComponent() {
+        return mComponent != null ? mComponent.get() : null;
     }
-    return true;
-  }
-  public View getView() {
-    return itemView;
-  }
-
-  public int getViewType() {
-    return mViewType;
-  }
-  public void setComponentUsing(boolean using){
-    if(mComponent!=null && mComponent.get() != null)
-        mComponent.get().setUsing(using);
-  }
-  public WXComponent getComponent(){
-    return mComponent != null ? mComponent.get() : null;
-  }
 }