再给scrollview添加 Loop List view2 然后 展开给这个脚本挂载一个预制体 ,这里为MyItem,在接下来的代码会从缓存池里面取,也应该保持一致。
依次创建源代码
StudentInfo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
public class StudentInfo { public String id { get; set; } public String name { get; set; } public String grade { get; set; } public String score { get; set; } public String age { get; set; }
using SuperScrollView; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;
public class SuperListBoxInit : MonoBehaviour { public SuperScrollView.LoopListView2 mLoopListView; public RectTransform Content;
private List<StudentInfo> studentInfos = new List<StudentInfo>(); private StudentInfoMgr infoMgr; // Use this for initialization void Start() { for (int i = 0; i < 100; i++) { StudentInfo student = new StudentInfo { id = (i + 100).ToString(), name = "zhang" + i, age = (i + 1).ToString(), grade = "超级", score = i.ToString(), }; studentInfos.Add(student); } InitListView();
}
private void InitListView() { infoMgr = new StudentInfoMgr(studentInfos); Debug.Log(infoMgr.TotalItemCount); mLoopListView.InitListView(infoMgr.TotalItemCount, OmGetItemByIndex); mLoopListView.MovePanelToItemIndex(infoMgr.TotalItemCount, 0); } private LoopListViewItem2 OmGetItemByIndex(LoopListView2 loopView, int index) { if (index < 0 || index > infoMgr.TotalItemCount) { return null; } var info = infoMgr.FindInfoByIndex(index); if (info == null) { return null; } /*2018.11以后MonoBehaviour不能 new 直接赋值就可*/ //LoopListViewItem2 item = new LoopListViewItem2(); var item = loopView.NewListViewItem("MyItem"); var itemInfo = item.GetComponent<UStudentInfo>(); itemInfo.Init(info, index); itemInfo.OnClick += OnClick; itemInfo.OnEnter += OnEnter; itemInfo.OnExit += OnExit; return item; }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;
public class UStudentInfo : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler { /// <summary> /// 实现点击事件 /// </summary> public Action<UStudentInfo> OnClick; /// <summary> /// 实现点击事件 /// </summary> public Action<UStudentInfo> OnEnter; /// <summary> /// 实现点击事件 /// </summary> public Action<UStudentInfo> OnExit;