[Opt]优化RenderItem注册

This commit is contained in:
陈思海 2026-04-29 15:54:57 +08:00
parent 999f9beaf8
commit de3ae0a393
3 changed files with 13 additions and 45 deletions

View File

@ -178,48 +178,20 @@ namespace AlicizaX.UI
recyclerView.Refresh(); recyclerView.Refresh();
} }
public void RegisterItemRender<TItemRender>(string viewName = "") where TItemRender : ItemRenderBase public void RegisterItemRender(Type itemRenderType)
{
RegisterItemRender(typeof(TItemRender), viewName);
}
public void RegisterItemRender(Type itemRenderType, string viewName = "")
{ {
var definition = ItemRenderResolver.GetOrCreate(itemRenderType); var definition = ItemRenderResolver.GetOrCreate(itemRenderType);
if (string.IsNullOrEmpty(definition.HolderTypeName))
if (string.IsNullOrEmpty(viewName))
{ {
ReleaseCachedItemRenders(string.Empty); ReleaseCachedItemRenders(string.Empty);
defaultItemRenderDefinition = definition; defaultItemRenderDefinition = definition;
return; return;
} }
ReleaseCachedItemRenders(viewName); ReleaseCachedItemRenders(definition.HolderTypeName);
itemRenderDefinitions[viewName] = definition; 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) public bool UnregisterItemRender(Type itemRenderType)
{ {
@ -228,12 +200,11 @@ namespace AlicizaX.UI
return false; return false;
} }
bool removed = false;
if (defaultItemRenderDefinition != null && defaultItemRenderDefinition.ItemRenderType == itemRenderType) if (defaultItemRenderDefinition != null && defaultItemRenderDefinition.ItemRenderType == itemRenderType)
{ {
defaultItemRenderDefinition = null; defaultItemRenderDefinition = null;
ReleaseCachedItemRenders(string.Empty); ReleaseCachedItemRenders(string.Empty);
removed = true; return true;
} }
string removedViewName = null; string removedViewName = null;
@ -250,10 +221,10 @@ namespace AlicizaX.UI
{ {
itemRenderDefinitions.Remove(removedViewName); itemRenderDefinitions.Remove(removedViewName);
ReleaseCachedItemRenders(removedViewName); ReleaseCachedItemRenders(removedViewName);
removed = true; return true;
} }
return removed; return false;
} }
public void ClearItemRenderRegistrations() public void ClearItemRenderRegistrations()

View File

@ -653,9 +653,11 @@ namespace AlicizaX.UI
{ {
ItemRenderType = itemRenderType; ItemRenderType = itemRenderType;
HolderType = holderType; HolderType = holderType;
HolderTypeName = holderType.Name;
this.createInstance = createInstance; this.createInstance = createInstance;
} }
public string HolderTypeName { get; private set; }
/// <summary> /// <summary>
/// 获取渲染器运行时类型。 /// 获取渲染器运行时类型。
/// </summary> /// </summary>

View File

@ -148,14 +148,14 @@ namespace AlicizaX.UI
} }
} }
public void RegisterItemRender<TItemRender>(string viewName = "") where TItemRender : ItemRenderBase public void RegisterItemRender<TItemRender>() 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<TItemRender>() where TItemRender : ItemRenderBase public bool UnregisterItemRender<TItemRender>() where TItemRender : ItemRenderBase
@ -169,11 +169,6 @@ namespace AlicizaX.UI
} }
private bool UnregisterItemRender(string viewName = "")
{
return _adapter.UnregisterItemRender(viewName);
}
public void ClearItemRenderRegistrations() public void ClearItemRenderRegistrations()
{ {
_adapter.ClearItemRenderRegistrations(); _adapter.ClearItemRenderRegistrations();