From 579f5ac572ba092e218bca956b89c17694a5f6db Mon Sep 17 00:00:00 2001 From: biezhihua Date: Thu, 23 May 2024 15:58:17 +0800 Subject: [PATCH] fix child tempalte page mode --- .../gaiax/render/node/GXNodeTreeCreator.kt | 17 +++++++++-------- .../gaiax/render/node/GXNodeTreePrepare.kt | 13 ++++++++----- .../view/container/GXContainerViewAdapter.kt | 7 +++++-- .../alibaba/gaiax/template/GXTemplateInfo.kt | 6 ++++-- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreeCreator.kt b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreeCreator.kt index ef5a8f0e6..d38bf8606 100644 --- a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreeCreator.kt +++ b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreeCreator.kt @@ -91,12 +91,15 @@ object GXNodeTreeCreator { // 容器模板下的子模板 if (gxNode.isContainerType() && gxChildTemplateInfo.isTemplate()) { + val gxTemplateItem = GXTemplateEngine.GXTemplateItem( + gxTemplateContext.context, + gxTemplateContext.templateItem.bizId, + gxChildLayer.id + ).apply { + this.isPageMode = gxTemplateContext.templateItem.isPageMode + } gxNode.addChildTemplateItems( - GXTemplateEngine.GXTemplateItem( - gxTemplateContext.context, - gxTemplateContext.templateItem.bizId, - gxChildLayer.id - ), gxChildVisualTemplateNode + gxTemplateItem, gxChildVisualTemplateNode ) } // 普通模板嵌套的子模板根节点,可能是普通模板也可能是容器模板 @@ -119,9 +122,7 @@ object GXNodeTreeCreator { } // 普通子节点 else { - val gxChildNode = createNode( - gxTemplateContext, gxNode, currentLayer, null, gxTemplateInfo - ) + val gxChildNode = createNode(gxTemplateContext, gxNode, currentLayer, null, gxTemplateInfo) // 建立层级关系 if (gxNode.children == null) { diff --git a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreePrepare.kt b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreePrepare.kt index 9db1a39ef..a9b8bc668 100644 --- a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreePrepare.kt +++ b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/node/GXNodeTreePrepare.kt @@ -94,12 +94,15 @@ object GXNodeTreePrepare { // 容器模板下的子模板 if (gxNode.isContainerType() && gxChildTemplateInfo.isTemplate()) { + val gxTemplateItem = GXTemplateEngine.GXTemplateItem( + gxTemplateContext.context, + gxTemplateContext.templateItem.bizId, + gxChildLayer.id + ).apply { + this.isPageMode = gxTemplateContext.templateItem.isPageMode + } gxNode.addChildTemplateItems( - GXTemplateEngine.GXTemplateItem( - gxTemplateContext.context, - gxTemplateContext.templateItem.bizId, - gxChildLayer.id - ), gxChildVisualTemplateNode + gxTemplateItem, gxChildVisualTemplateNode ) } // 普通模板嵌套的子模板根节点,可能是普通模板也可能是容器模板 diff --git a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/view/container/GXContainerViewAdapter.kt b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/view/container/GXContainerViewAdapter.kt index ab6b05824..bacd056fa 100644 --- a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/view/container/GXContainerViewAdapter.kt +++ b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/render/view/container/GXContainerViewAdapter.kt @@ -456,9 +456,12 @@ class GXContainerViewAdapter( val footer = extend?.getJSONObject(GAIAX_CONTAINER_FOOTER) if (footer != null) { val templateId = footer.getString(GXTemplateKey.GAIAX_LAYER_ID) - footerTemplateItem = GXTemplateEngine.GXTemplateItem( + val gxTemplateItem = GXTemplateEngine.GXTemplateItem( gxTemplateContext.context, gxTemplateContext.templateItem.bizId, templateId - ) + ).apply { + this.isPageMode = gxTemplateContext.templateItem.isPageMode + } + footerTemplateItem = gxTemplateItem footerTypeHasMore = footer.getBoolean(GXTemplateKey.GAIAX_CONTAINER_HAS_MORE) ?: false } } diff --git a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/template/GXTemplateInfo.kt b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/template/GXTemplateInfo.kt index 06f3e584a..a8cf3dfb6 100644 --- a/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/template/GXTemplateInfo.kt +++ b/GaiaXAndroid/src/main/kotlin/com/alibaba/gaiax/template/GXTemplateInfo.kt @@ -392,12 +392,14 @@ data class GXTemplateInfo( templateInfo: GXTemplateInfo, templateItem: GXTemplateEngine.GXTemplateItem ) { forChildrenTemplate(templateInfo.layer) { - val childTemplate = createTemplate(GXTemplateEngine.GXTemplateItem( + val gxTemplateItem = GXTemplateEngine.GXTemplateItem( templateItem.context, templateItem.bizId, it.id ).apply { this.isLocal = templateItem.isLocal this.templateVersion = templateItem.templateVersion - }) + this.isPageMode = templateItem.isPageMode + } + val childTemplate = createTemplate(gxTemplateItem) if (templateInfo.children == null) { templateInfo.children = mutableListOf() }