From de3ae0a3936b5cc977498985cabb4a5078eacec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=80=9D=E6=B5=B7?= <1464576565@qq.com> Date: Wed, 29 Apr 2026 15:54:57 +0800 Subject: [PATCH] =?UTF-8?q?[Opt]=E4=BC=98=E5=8C=96RenderItem=E6=B3=A8?= =?UTF-8?q?=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/RecyclerView/Adapter/Adapter.cs | 43 ++++------------------ Runtime/RecyclerView/Adapter/ItemRender.cs | 2 + Runtime/RecyclerView/UGList.cs | 13 ++----- 3 files changed, 13 insertions(+), 45 deletions(-) diff --git a/Runtime/RecyclerView/Adapter/Adapter.cs b/Runtime/RecyclerView/Adapter/Adapter.cs index ab47e54..1e30432 100644 --- a/Runtime/RecyclerView/Adapter/Adapter.cs +++ b/Runtime/RecyclerView/Adapter/Adapter.cs @@ -178,48 +178,20 @@ namespace AlicizaX.UI recyclerView.Refresh(); } - public void RegisterItemRender(string viewName = "") where TItemRender : ItemRenderBase - { - RegisterItemRender(typeof(TItemRender), viewName); - } - - public void RegisterItemRender(Type itemRenderType, string viewName = "") + public void RegisterItemRender(Type itemRenderType) { var definition = ItemRenderResolver.GetOrCreate(itemRenderType); - - if (string.IsNullOrEmpty(viewName)) + if (string.IsNullOrEmpty(definition.HolderTypeName)) { ReleaseCachedItemRenders(string.Empty); defaultItemRenderDefinition = definition; return; } - ReleaseCachedItemRenders(viewName); - itemRenderDefinitions[viewName] = definition; + ReleaseCachedItemRenders(definition.HolderTypeName); + itemRenderDefinitions[definition.HolderTypeName] = definition; } - public bool UnregisterItemRender(string viewName = "") - { - if (string.IsNullOrEmpty(viewName)) - { - bool hadDefault = defaultItemRenderDefinition != null; - defaultItemRenderDefinition = null; - if (hadDefault) - { - ReleaseCachedItemRenders(string.Empty); - } - - return hadDefault; - } - - bool removed = itemRenderDefinitions.Remove(viewName); - if (removed) - { - ReleaseCachedItemRenders(viewName); - } - - return removed; - } public bool UnregisterItemRender(Type itemRenderType) { @@ -228,12 +200,11 @@ namespace AlicizaX.UI return false; } - bool removed = false; if (defaultItemRenderDefinition != null && defaultItemRenderDefinition.ItemRenderType == itemRenderType) { defaultItemRenderDefinition = null; ReleaseCachedItemRenders(string.Empty); - removed = true; + return true; } string removedViewName = null; @@ -250,10 +221,10 @@ namespace AlicizaX.UI { itemRenderDefinitions.Remove(removedViewName); ReleaseCachedItemRenders(removedViewName); - removed = true; + return true; } - return removed; + return false; } public void ClearItemRenderRegistrations() diff --git a/Runtime/RecyclerView/Adapter/ItemRender.cs b/Runtime/RecyclerView/Adapter/ItemRender.cs index d32cf6c..dc35cee 100644 --- a/Runtime/RecyclerView/Adapter/ItemRender.cs +++ b/Runtime/RecyclerView/Adapter/ItemRender.cs @@ -653,9 +653,11 @@ namespace AlicizaX.UI { ItemRenderType = itemRenderType; HolderType = holderType; + HolderTypeName = holderType.Name; this.createInstance = createInstance; } + public string HolderTypeName { get; private set; } /// /// 获取渲染器运行时类型。 /// diff --git a/Runtime/RecyclerView/UGList.cs b/Runtime/RecyclerView/UGList.cs index f21fbcd..55aabf1 100644 --- a/Runtime/RecyclerView/UGList.cs +++ b/Runtime/RecyclerView/UGList.cs @@ -148,14 +148,14 @@ namespace AlicizaX.UI } } - public void RegisterItemRender(string viewName = "") where TItemRender : ItemRenderBase + public void RegisterItemRender() where TItemRender : ItemRenderBase { - RegisterItemRender(typeof(TItemRender), viewName); + RegisterItemRender(typeof(TItemRender)); } - public void RegisterItemRender(Type itemRenderType, string viewName = "") + public void RegisterItemRender(Type itemRenderType) { - _adapter.RegisterItemRender(itemRenderType, viewName); + _adapter.RegisterItemRender(itemRenderType); } public bool UnregisterItemRender() where TItemRender : ItemRenderBase @@ -169,11 +169,6 @@ namespace AlicizaX.UI } - private bool UnregisterItemRender(string viewName = "") - { - return _adapter.UnregisterItemRender(viewName); - } - public void ClearItemRenderRegistrations() { _adapter.ClearItemRenderRegistrations();