[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();
}
public void RegisterItemRender<TItemRender>(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()

View File

@ -653,9 +653,11 @@ namespace AlicizaX.UI
{
ItemRenderType = itemRenderType;
HolderType = holderType;
HolderTypeName = holderType.Name;
this.createInstance = createInstance;
}
public string HolderTypeName { get; private set; }
/// <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
@ -169,11 +169,6 @@ namespace AlicizaX.UI
}
private bool UnregisterItemRender(string viewName = "")
{
return _adapter.UnregisterItemRender(viewName);
}
public void ClearItemRenderRegistrations()
{
_adapter.ClearItemRenderRegistrations();