[Opt]优化RenderItem注册
This commit is contained in:
parent
999f9beaf8
commit
de3ae0a393
@ -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()
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user