diff --git a/tangram/build.gradle b/tangram/build.gradle index b6947ab..f76817a 100644 --- a/tangram/build.gradle +++ b/tangram/build.gradle @@ -90,7 +90,7 @@ dependencies { compile 'com.android.support:recyclerview-v7:23.1.1@aar' compile 'com.android.support:support-v4:23.1.1@aar' compile 'com.android.support:support-annotations:23.1.1' - compile 'com.alibaba.android:ultraviewpager:1.0.6.3@aar' + compile 'com.alibaba.android:ultraviewpager:1.0.6.5@aar' compile('me.everything:overscroll-decor-android:1.0.1@aar') { transitive true exclude group: 'com.android.support', module: 'recyclerview-v7' diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java b/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java index 9f75ee2..276f450 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java @@ -43,9 +43,11 @@ import com.tmall.wireless.tangram.core.service.ServiceManager; import com.tmall.wireless.tangram.dataparser.DataParser; import com.tmall.wireless.tangram.dataparser.IAdapterBuilder; import com.tmall.wireless.tangram.dataparser.concrete.BaseCardBinderResolver; +import com.tmall.wireless.tangram.dataparser.concrete.BaseCellBinder; import com.tmall.wireless.tangram.dataparser.concrete.BaseCellBinderResolver; import com.tmall.wireless.tangram.dataparser.concrete.CardResolver; import com.tmall.wireless.tangram.eventbus.BusSupport; +import com.tmall.wireless.tangram.structure.BaseCell; import com.tmall.wireless.tangram.structure.card.VVCard; import com.tmall.wireless.tangram.support.TimerSupport; import com.tmall.wireless.tangram.util.ImageUtils; @@ -209,6 +211,38 @@ public class BaseTangramEngine implements ServiceManager { } } + /** + * register cell after engine has been created + * @param type + * @param cellClz + * @param viewClz + * @param + */ + public void registerCell(String type, + @NonNull Class cellClz, @NonNull Class viewClz) { + registerCell(type, viewClz); + MVHelper mMVHelper = getService(MVHelper.class); + if (mMVHelper != null && mMVHelper.resolver() != null) { + mMVHelper.resolver().registerCompatible(type, cellClz); + } + } + + /** + * register cell after engine has been created + * @param type + * @param viewClz + * @param + */ + public void registerCell(String type, @NonNull Class viewClz) { + BaseCellBinderResolver baseCellBinderResolver = getService(BaseCellBinderResolver.class); + MVHelper mMVHelper = getService(MVHelper.class); + if (baseCellBinderResolver != null && mMVHelper != null && mMVHelper.resolver() != null) { + baseCellBinderResolver.register(type, new BaseCellBinder<>(viewClz, mMVHelper)); + mMVHelper.resolver().register(type, viewClz); + } + + } + /** * Call this when your activity is ready to destory to clear inner resource. */ diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java b/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java index aeb5e28..7c88d91 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/structure/BaseCell.java @@ -24,6 +24,7 @@ package com.tmall.wireless.tangram.structure; +import android.util.SparseArray; import com.tmall.wireless.tangram.Engine; import com.tmall.wireless.tangram.MVHelper; import com.tmall.wireless.tangram.core.service.ServiceManager; @@ -138,6 +139,8 @@ public class BaseCell extends ComponentLifecycle implements View public boolean mIsExposed = false; + private SparseArray mTag; + public BaseCell() { objectId = sIsGenIds ? sIdGen.getAndIncrement() : 0; } @@ -332,4 +335,28 @@ public class BaseCell extends ComponentLifecycle implements View return extras; } } + + /** + * bind a tag to baseCell + * @param key + * @param value + */ + public void setTag(int key, Object value) { + if (mTag == null) { + mTag = new SparseArray<>(); + } + mTag.put(key, value); + } + + /** + * get a tag from baseCell + * @param key + * @return + */ + public Object getTag(int key) { + if (mTag != null) { + return mTag.get(key); + } + return null; + } } diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java b/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java index 8c354b9..626f904 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/view/BannerView.java @@ -124,6 +124,7 @@ public class BannerView extends RelativeLayout implements ViewPager.OnPageChange public void setAdapter(PagerAdapter adapter) { mUltraViewPager.setAdapter(adapter); + mUltraViewPager.disableAutoScroll();//reset timer when reuse mUltraViewPager.setOnPageChangeListener(this); }