/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 , ĠAlibaba ĠGroup ĠHold ing ĠLimited ; Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . alibaba . g ai ax . render Ċ Ċ import Ġandroid . view . View Ċ import Ġcom . alibaba . g ai ax . context . GX Template Context Ċ import Ġcom . alibaba . g ai ax . render . node . GX Node Ċ import Ġcom . alibaba . g ai ax . render . node . GX Node Tree Creator Ċ import Ġcom . alibaba . g ai ax . render . node . GX View Node Tree Updater Ċ import Ġcom . alibaba . g ai ax . render . view . GX IR oot View Ċ import Ġcom . alibaba . g ai ax . render . view . GX View Tree Creator Ċ import Ġcom . alibaba . g ai ax . render . view . GX View Tree Updater Ċ import Ġjava . lang . ref . Soft Reference Ċ Ċ /** Ċ Ġ* Ġ@ suppress Ċ Ġ*/ Ċ class ĠG X Render Impl Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Node ( template Context : ĠG X Template Context ): ĠG X Node Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Node Ġ= ĠG X Node Tree Creator . create ( template Context ) ĊĠĠĠĠĠĠĠ Ġtemplate Context . root Node Ġ= Ġroot Node ĊĠĠĠĠĠĠĠ Ġreturn Ġroot Node ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind Node Data ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Node Ġ= Ġtemplate Context . root Node ĊĠĠĠĠĠĠĠ Ġif Ġ( root Node Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Context . is Dirty Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġvirtual Ġnode Ġtree ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG X View Node Tree Updater ( template Context ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate View ( template Context : ĠG X Template Context ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġvirtual Ġnode Ġtree ĊĠĠĠĠĠĠĠ Ġval Ġroot Node Ġ= ĠG X Node Tree Creator . create ( template Context ) ĊĠĠĠĠĠĠĠ Ġtemplate Context . root Node Ġ= Ġroot Node ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġview Ġbased Ġon Ġthe Ġvirtual Ġnode Ġtree ĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= ĠG X View Tree Creator ( template Context , Ġroot Node ). build (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġas ĠG X IR oot View ). set Template Context ( template Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtemplate Context . root View Ġ= ĠSoft Reference ( root View ) ĊĊĠĠĠĠĠĠĠ ĠonCreate ( template Context ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtemplate Context . root View ?. get () Ġ?: Ġthrow ĠIllegalArgumentException (" Create Ġtemplate Ġview Ġexception , Ġtemplate Context Ġ= Ġ$ template Context ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbind ViewData ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Node Ġ= Ġtemplate Context . root Node Ġ?: Ġthrow ĠIllegalArgumentException (" Root Node Ġis Ġnull ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠRe setting Ġthe ĠTemplate ĠStatus ĊĠĠĠĠĠĠĠ Ġtemplate Context . is Dirty Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġvirtual Ġnode Ġtree ĊĠĠĠĠĠĠĠ ĠG X View Node Tree Updater ( template Context ). build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġview Ġlayout ĊĠĠĠĠĠĠĠ ĠG X View Tree Updater ( template Context , Ġroot Node ). build () ĊĊĠĠĠĠĠĠĠ Ġon Ready Or Re use ( template Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġon Destroy ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Context . life Status Ġ= ĠG X Template Context . LI FE _ ON _ DESTROY ĊĠĠĠĠĠĠĠ Ġtemplate Context . release () ĊĠĠĠĠĠĠĠ Ġtemplate Context . visible Status Ġ= ĠG X Template Context . LI FE _ ON _ NONE ĊĠĠĠĠĠĠĠ Ġtemplate Context . life Status Ġ= ĠG X Template Context . LI FE _ ON _ NONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Visible ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Context . visible Status Ġ= ĠG X Template Context . LI FE _ ON _ VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon In visible ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Context . visible Status Ġ= ĠG X Template Context . LI FE _ ON _ IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonCreate ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Context . life Status Ġ= ĠG X Template Context . LI FE _ ON _ CREATE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Ready Or Re use ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( template Context . life Status Ġ== ĠG X Template Context . LI FE _ ON _ READY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Re use ( template Context ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Ready ( template Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Ready ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Context . life Status Ġ= ĠG X Template Context . LI FE _ ON _ READY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Re use ( template Context : ĠG X Template Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Context . life Status Ġ= ĠG X Template Context . LI FE _ ON _ RE USE ĊĠĠĠ Ġ} Ċ }