public void SetData(List <GraphData> graphDatas) { _data = graphDatas; float scrollPosition; // if some value been cached before if (!_scrollLastPositions.TryGetValue(_trackerType, out scrollPosition)) { scrollPosition = 1; } // tell the scroller to reload now that we have the data scroller.ReloadData(scrollPosition); // we need to snap immediately but scroller asset got some limitation here, that's why need to use this workaround EnhancedScroller.TweenType tween = scroller.snapTweenType; scroller.snapTweenType = EnhancedScroller.TweenType.immediate; scroller.Snap(); scroller.snapTweenType = tween; // simulate scrolling callback after forced position setup to set correct focus and update ui. ScrollPosition parameter can be any value, it doesn't used anyway ScrollerScrolled(scroller, new Vector2(scrollPosition, 0), 1); }