无限循环 之 数据适配器 DataApdater
作者:互联网
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DataApdater<T> { #region 字段 //保存的所有数据 public List<T> allData = new List<T>(); //不知道什么类型 所以是泛型 //保存当前正在显示的数据 public LinkedList<T> currentShowData = new LinkedList<T>(); //LinkedList 链表 #endregion #region 方法 public T GetHeaderData() { //判断总数据的数量 if (allData.Count == 0) { return default(T); } //特殊情况 if ( currentShowData.Count == 0 ) { T header = allData[0]; currentShowData.AddFirst(header); return header; } //currentShowData 当前正在显示的第一个数据 T t = currentShowData.First.Value; int index = allData.IndexOf(t); if (index != 0) //判断数据不为空时 { T header = allData[index - 1]; currentShowData.AddFirst(header); //将数据加到头部 return header; } return default(T); //如果等于零,默认值为空 } public bool RemoveHeadData() { //移除 currentShowData 当前正在显示的第一个数据的第一个数据 if (currentShowData.Count == 0) { return false; } currentShowData.RemoveFirst(); return true; } public T GetLastData() { //判断总数据的数量 if (allData.Count == 0) { return default(T); } //特殊情况 if (currentShowData.Count == 0 || currentShowData.Count == 1) { T l = allData[0]; currentShowData.AddLast(l); return l; } //获取 currentShowData 最后一个的下一个 T last = currentShowData.Last.Value; int index = allData.IndexOf(last); if (index != allData.Count - 1) { T now_last = allData[index + 1]; currentShowData.AddLast(now_last); return now_last; } return default(T); } public bool RemoveLastData() { //移除 currentShowData 最后一个 if (currentShowData.Count == 0 || currentShowData.Count == 1) { return false; } currentShowData.RemoveLast(); return true; } #endregion #region 数据管理 public void InitData(T[] t) { allData.Clear(); currentShowData.Clear(); allData.AddRange(t); } public void InitData(List<T> t ) //重载函数 { InitData(t.ToArray()); } public void AddData(T[] t) //添加数据 { allData.AddRange(t); } public void AddData(List<T> t) { AddData(t.ToArray()); } #endregion }
标签:Count,return,适配器,header,无限,currentShowData,DataApdater,public,allData 来源: https://www.cnblogs.com/gyjldlhiahia/p/14823712.html