using System; using AlicizaX.ObjectPool; using UnityEngine; namespace AlicizaX.UI.RecyclerView { public sealed class SimpleViewProvider : ViewProvider { public SimpleViewProvider(RecyclerView recyclerView, ViewHolder[] templates) : base(recyclerView, templates) { } public override ViewHolder GetTemplate(string viewName = "") { if (templates == null || templates.Length == 0) { throw new NullReferenceException("ViewProvider templates can not null or empty."); } return templates[0]; } public override ViewHolder[] GetTemplates() { if (templates == null || templates.Length == 0) { throw new NullReferenceException("ViewProvider templates can not null or empty."); } return templates; } public override ViewHolder Allocate(string viewName) { return ViewHolderObjectPool.Allocate(GetTemplate(),recyclerView.Content); } public override void Free(string viewName, ViewHolder viewHolder) { ViewHolderObjectPool.Free(viewHolder); } public override void Reset() { Clear(); } } }