private void ProcessListElement(FieldInfo field, string fieldName, object templateObject, RectTransform parent, bool addToForm) { ListElementAttribute listElementAttr = Utils.ExtractAttributeFromFieldInfo <ListElementAttribute>(field); if (listElementAttr != null) { UIListElement uiListElement = CreateUIListElement(fieldName, parent); if (uiListElement != null) { object listFieldValue = field.GetValue(templateObject); if (typeof(IList).IsAssignableFrom(field.FieldType)) { IList list = listFieldValue as IList; Type listElementType = Utils.GetElementTypeOfEnumerable(field.FieldType); if (listElementType != null) { if (listElementType == typeof(String)) { uiListElement.TemplateObject = null; } else { uiListElement.TemplateObject = Activator.CreateInstance(listElementType); } } for (int i = 0; i < list.Count; i++) { var item = list[i]; string itemName = fieldName; if ("S".Equals(fieldName.Last().ToString().ToUpper())) { itemName = itemName.Substring(0, fieldName.Length - 1) + "_" + (i + 1); } ProcessObjectField(item, itemName, listElementType, uiListElement.listContent); //ConvertObjectToFormUIs(item, uiListElement.listContent, false); //if (uiTextFieldListElement != null) //{ // uiTextFieldListElement.EnableDeleteButton(); //} //uiListElement.AddComponent(uiTextFieldListElement); } } if (addToForm) { uiFormInstance?.AddUIComponent(uiListElement); } } } }
public void AddUIComponent(UIListElement uiListElement) { if (lists == null) { lists = new List <UIListElement>(); } if (lists != null) { lists.Add(uiListElement); } }
private UIListElement CreateUIListElement(string title, Transform parent) { UIListElement uiListElement = null; if (uiListElementPrefab != null) { uiListElement = Instantiate(uiListElementPrefab, parent); if (uiListElement != null) { string objectName = Utils.RemoveCloneMarkerFromString(uiListElement.name); uiListElement.name = objectName + title; uiListElement.SetLabel(title); } } return(uiListElement); }