using System; using UnityEngine; using UnityEngine.UI; namespace AlicizaX.UI.RecyclerView { public abstract class ViewHolder : MonoBehaviour { private RectTransform rectTransform; public RectTransform RectTransform { get { if (rectTransform == null) { rectTransform = GetComponent(); } return rectTransform; } private set { rectTransform = value; } } public string Name { get; set; } public int Index { get; set; } public bool ChoiseState { private set; get; } public Vector2 SizeDelta => RectTransform.sizeDelta; public virtual void OnStop() { } public abstract void BindViewData(T data); public virtual void BindItemClick(T data, Action action) { if (TryGetComponent(out Button button)) { button.onClick.RemoveAllListeners(); button.onClick.AddListener(() => action?.Invoke(data)); } else if (TryGetComponent(out UXButton uxButton)) { uxButton.onClick.RemoveAllListeners(); uxButton.onClick.AddListener(() => action?.Invoke(data)); } } protected internal void BindChoiceState(bool state) { if (ChoiseState != state) { ChoiseState = state; OnBindChoiceState(state); } } protected internal virtual void OnBindChoiceState(bool state) { } } }