This commit is contained in:
陈思海 2025-05-30 13:43:08 +08:00
parent 00ae22e155
commit 9987d56adf
3 changed files with 25 additions and 19 deletions

View File

@ -116,7 +116,6 @@ namespace AlicizaX.UI.RecyclerView
public int CurrentIndex public int CurrentIndex
{ {
get => currentIndex; get => currentIndex;
set => currentIndex = value;
} }
public bool CanScroll => true; public bool CanScroll => true;
@ -134,7 +133,7 @@ namespace AlicizaX.UI.RecyclerView
public Scrollbar Scrollbar => _scrollbar; public Scrollbar Scrollbar => _scrollbar;
private IAdapter Adapter; private IAdapter _adapter;
public LayoutManager LayoutManager => _layoutManager; public LayoutManager LayoutManager => _layoutManager;
@ -262,12 +261,12 @@ namespace AlicizaX.UI.RecyclerView
public void SetAdapter(IAdapter adapter) public void SetAdapter(IAdapter adapter)
{ {
Adapter = adapter; _adapter = adapter;
ViewProvider.Adapter = Adapter; ViewProvider.Adapter = _adapter;
ViewProvider.LayoutManager = _layoutManager; ViewProvider.LayoutManager = _layoutManager;
ViewProvider.LayoutManager = _layoutManager; ViewProvider.LayoutManager = _layoutManager;
_layoutManager.RecyclerView = this; _layoutManager.RecyclerView = this;
_layoutManager.Adapter = Adapter; _layoutManager.Adapter = _adapter;
_layoutManager.ViewProvider = viewProvider; _layoutManager.ViewProvider = viewProvider;
_layoutManager.Direction = direction; _layoutManager.Direction = direction;
_layoutManager.Alignment = alignment; _layoutManager.Alignment = alignment;
@ -355,8 +354,8 @@ namespace AlicizaX.UI.RecyclerView
Refresh(); Refresh();
} }
index %= Adapter.GetItemCount(); index %= _adapter.GetItemCount();
index = index < 0 ? Adapter.GetItemCount() + index : index; index = index < 0 ? _adapter.GetItemCount() + index : index;
if (currentIndex != index) if (currentIndex != index)
{ {

View File

@ -23,26 +23,34 @@ namespace AlicizaX.UI.RecyclerView
private set { rectTransform = value; } private set { rectTransform = value; }
} }
public string Name { get; set; } public string Name { get; internal set; }
public int Index { get; set; } public int Index { get; internal set; }
public bool ChoiseState { private set; get; } public bool ChoiseState { private set; get; }
public Vector2 SizeDelta => RectTransform.sizeDelta; public Vector2 SizeDelta => RectTransform.sizeDelta;
private IButton _button;
public virtual void OnStop() protected internal virtual void OnStart()
{ {
} }
public abstract void BindViewData<T>(T data); protected internal virtual void OnRecycled()
public virtual void BindItemClick<T>(T data, Action<T> action)
{ {
if (TryGetComponent(out IButton button))
{
button.onClick.RemoveAllListeners();
button.onClick.AddListener(() => action?.Invoke(data));
} }
protected internal abstract void BindViewData<T>(T data);
protected internal virtual void BindItemClick<T>(T data, Action<T> action)
{
if (_button is null && !TryGetComponent(out _button))
{
Log.Warning("找不到Button组件");
return;
}
_button.onClick.RemoveAllListeners();
_button.onClick.AddListener(() => action?.Invoke(data));
} }
protected internal void BindChoiceState(bool state) protected internal void BindChoiceState(bool state)

View File

@ -44,11 +44,10 @@ namespace AlicizaX.UI.RecyclerView
string viewName = Adapter.GetViewName(i); string viewName = Adapter.GetViewName(i);
var viewHolder = Allocate(viewName); var viewHolder = Allocate(viewName);
// viewHolder.OnStart(); viewHolder.OnStart();
viewHolder.Name = viewName; viewHolder.Name = viewName;
viewHolder.Index = i; viewHolder.Index = i;
viewHolders.Add(viewHolder); viewHolders.Add(viewHolder);
LayoutManager.Layout(viewHolder, i); LayoutManager.Layout(viewHolder, i);
Adapter.OnBindViewHolder(viewHolder, i); Adapter.OnBindViewHolder(viewHolder, i);
} }
@ -66,7 +65,7 @@ namespace AlicizaX.UI.RecyclerView
var viewHolder = viewHolders[viewHolderIndex]; var viewHolder = viewHolders[viewHolderIndex];
viewHolders.RemoveAt(viewHolderIndex); viewHolders.RemoveAt(viewHolderIndex);
viewHolder.OnStop(); viewHolder.OnRecycled();
Free(viewHolder.Name, viewHolder); Free(viewHolder.Name, viewHolder);
} }
} }