public void OnValueChange(Vector2 pos) { int index = GetPosIndex(); if (position != index && index > -1) { position = index; for (int i = itemList.Count; i > 0; i--) { BaseAdapterItem <T> item = itemList[i - 1]; if (item.Index < index || (item.Index >= index + viewCount)) { itemList.Remove(item); unUsedQueue.Enqueue(item); } } for (int i = position; i < position + viewCount; i++) { if (i < 0) { continue; } if (i > dataCount - 1) { continue; } bool isOk = false; foreach (BaseAdapterItem <T> item in itemList) { if (item.Index == i) { isOk = true; UpdateItem(i, item); } } if (isOk) { continue; } CreateItem(i); } } }
private void UpdateItem(int index, BaseAdapterItem <T> itemBase) { itemBase.Index = index; itemBase.SetData(datas[index], otherParam); }