From 8ef3c4c1e94de2c7ab6574ae55f07ee67ddc2fad Mon Sep 17 00:00:00 2001 From: longerian Date: Mon, 26 Mar 2018 15:35:42 +0800 Subject: [PATCH] refractor load card API --- .../wireless/tangram/BaseTangramEngine.java | 1 - .../tangram/dataparser/concrete/Style.java | 2 +- .../wireless/tangram/op/LoadGroupOp.java | 19 +++++++++ .../tmall/wireless/tangram/op/LoadMoreOp.java | 21 ++++++++++ .../tmall/wireless/tangram/op/TangramOp1.java | 2 + .../tmall/wireless/tangram/op/TangramOp3.java | 22 +++++++++++ .../support/async/CardLoadSupport.java | 39 ++++++++++--------- 7 files changed, 85 insertions(+), 21 deletions(-) create mode 100644 tangram/src/main/java/com/tmall/wireless/tangram/op/LoadGroupOp.java create mode 100644 tangram/src/main/java/com/tmall/wireless/tangram/op/LoadMoreOp.java create mode 100644 tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp3.java 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 0fee703..8bc9c31 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/BaseTangramEngine.java @@ -31,7 +31,6 @@ import android.support.annotation.Nullable; import android.support.v4.util.ArrayMap; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ChildDrawingOrderCallback; -import android.util.Pair; import android.view.View; import android.widget.ImageView; diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/dataparser/concrete/Style.java b/tangram/src/main/java/com/tmall/wireless/tangram/dataparser/concrete/Style.java index 3b0de3c..f744166 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/dataparser/concrete/Style.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/dataparser/concrete/Style.java @@ -109,7 +109,7 @@ public class Style { public static final int DISPLAY_INNER_BLOCK = 1; - private static final int[] DEFAULT_MARGIN = new int[]{0, 0, 0, 0}; + private static final int[] DEFAULT_MARGIN = new int[] {0, 0, 0, 0}; public int bgColor; diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/op/LoadGroupOp.java b/tangram/src/main/java/com/tmall/wireless/tangram/op/LoadGroupOp.java new file mode 100644 index 0000000..28946df --- /dev/null +++ b/tangram/src/main/java/com/tmall/wireless/tangram/op/LoadGroupOp.java @@ -0,0 +1,19 @@ +package com.tmall.wireless.tangram.op; + +import java.util.List; + +import com.tmall.wireless.tangram.dataparser.concrete.Card; +import com.tmall.wireless.tangram.structure.BaseCell; + +/** + * Created by longerian on 2018/3/26. + * + * @author longerian + * @date 2018/03/26 + */ + +public class LoadGroupOp extends TangramOp2> { + public LoadGroupOp(Card arg1, List arg2) { + super(OP_TYPE.LOAD_GROUP, arg1, arg2); + } +} diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/op/LoadMoreOp.java b/tangram/src/main/java/com/tmall/wireless/tangram/op/LoadMoreOp.java new file mode 100644 index 0000000..94aefc6 --- /dev/null +++ b/tangram/src/main/java/com/tmall/wireless/tangram/op/LoadMoreOp.java @@ -0,0 +1,21 @@ +package com.tmall.wireless.tangram.op; + +import java.util.List; + +import com.tmall.wireless.tangram.dataparser.concrete.Card; +import com.tmall.wireless.tangram.structure.BaseCell; + +/** + * Created by longerian on 2018/3/26. + * + * @author longerian + * @date 2018/03/26 + */ + +public class LoadMoreOp extends TangramOp3, Boolean> { + + public LoadMoreOp(Card arg1, List arg2, Boolean arg3) { + super(OP_TYPE.LOAD_MORE, arg1, arg2, arg3); + } + +} diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp1.java b/tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp1.java index 812c311..57de436 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp1.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp1.java @@ -53,6 +53,8 @@ public class TangramOp1 { public static final int REPLACE_GROUP_CONTENT = 11; public static final int REPLACE_GROUP = 12; public static final int UPDATE_CELL = 13; + public static final int LOAD_GROUP = 14; + public static final int LOAD_MORE = 15; } private final int mType; diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp3.java b/tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp3.java new file mode 100644 index 0000000..ff00a73 --- /dev/null +++ b/tangram/src/main/java/com/tmall/wireless/tangram/op/TangramOp3.java @@ -0,0 +1,22 @@ +package com.tmall.wireless.tangram.op; + +/** + * Created by longerian on 2018/3/26. + * + * @author longerian + * @date 2018/03/26 + */ + +public class TangramOp3 extends TangramOp2 { + + private final V3 arg3; + + public TangramOp3(int type, V1 arg1, V2 arg2, V3 arg3) { + super(type, arg1, arg2); + this.arg3 = arg3; + } + + public V3 getArg3() { + return arg3; + } +} diff --git a/tangram/src/main/java/com/tmall/wireless/tangram/support/async/CardLoadSupport.java b/tangram/src/main/java/com/tmall/wireless/tangram/support/async/CardLoadSupport.java index d366d65..c52971b 100644 --- a/tangram/src/main/java/com/tmall/wireless/tangram/support/async/CardLoadSupport.java +++ b/tangram/src/main/java/com/tmall/wireless/tangram/support/async/CardLoadSupport.java @@ -27,6 +27,8 @@ package com.tmall.wireless.tangram.support.async; import android.support.v4.util.Pair; import android.util.Log; import com.tmall.wireless.tangram.dataparser.concrete.Card; +import com.tmall.wireless.tangram.op.LoadGroupOp; +import com.tmall.wireless.tangram.op.LoadMoreOp; import com.tmall.wireless.tangram.structure.BaseCell; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; @@ -213,7 +215,7 @@ public class CardLoadSupport { } /** - * start load data for a card, usually called by {@link com.tmall.wireless.tangram.TangramEngine} + * Start to load data for a card, usually called by {@link com.tmall.wireless.tangram.TangramEngine} * @param card the card need reactively loading data */ public void reactiveDoLoad(Card card) { @@ -225,17 +227,17 @@ public class CardLoadSupport { /** * Combine with {@link #observeCardLoading()}, use this method as success consumer to subscribe to the Observable.
- * If your request success, provide a Pair with original card and non-empty List. - * Otherwise, provide a Pair with original card and empty List. + * If your request success, provide a {@link LoadGroupOp} with original card and non-empty List.
+ * Otherwise, provide a {@link LoadGroupOp} with original card and empty List. * @return A consumer to consume load event. */ - public Consumer>> asDoLoadFinishConsumer() { - return new Consumer>>() { + public Consumer asDoLoadFinishConsumer() { + return new Consumer() { @Override - public void accept(Pair> result) throws Exception { - Card card = result.first; + public void accept(LoadGroupOp result) throws Exception { + Card card = result.getArg1(); card.loading = false; - List cells = result.second; + List cells = result.getArg2(); if (cells != null && !cells.isEmpty()) { card.loaded = true; card.setCells(cells); @@ -282,7 +284,7 @@ public class CardLoadSupport { } /** - * start load more data for a card, usually called by {@link com.tmall.wireless.tangram.TangramEngine} + * Start to load more data for a card, usually called by {@link com.tmall.wireless.tangram.TangramEngine} * @param card the card need reactively loading data */ public void reactiveDoLoadMore(Card card) { @@ -294,21 +296,20 @@ public class CardLoadSupport { /** - * Combine with {@link #observeCardLoadingMore()}, use this method as success consumer to subscribe to the Observable
- * If your request success, provide a Pair with original card and another Pair with non-empty List and boolean value to indicate if there is more. - * Otherwise, provide a Pair with original card and another Pair with empty List and boolean value to indicate if there is more. + * Combine with {@link #observeCardLoadingMore()}, use this method as success consumer to subscribe to the Observable.
+ * If your request success, provide a {@link LoadMoreOp} with original card, non-empty List and boolean value to indicate whether there is more.
+ * Otherwise, provide a {@link LoadMoreOp} with original card, empty List and boolean value to indicate whether there is more. * @return A consumer to consume load more event. */ - public Consumer, Boolean>>> asDoLoadMoreFinishConsumer() { - return new Consumer, Boolean>>>() { + public Consumer asDoLoadMoreFinishConsumer() { + return new Consumer() { @Override - public void accept(Pair, Boolean>> result) throws Exception { - Card card = result.first; + public void accept(LoadMoreOp result) throws Exception { + Card card = result.getArg1(); card.loading = false; card.loaded = true; - Pair, Boolean> data = result.second; - List cells = data.first; - boolean hasMore = data.second; + List cells = result.getArg2(); + boolean hasMore = result.getArg3(); if (cells != null && !cells.isEmpty()) { if (card.page == sInitialPage) { card.setCells(cells);