2017-08-02 17:21:45 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
namespace UnityEngine.UI.Extensions.Examples
|
|
|
|
|
{
|
|
|
|
|
public class Example03ScrollView : FancyScrollView<Example03CellDto, Example03ScrollViewContext>
|
|
|
|
|
{
|
|
|
|
|
[SerializeField]
|
2018-01-20 20:08:44 +08:00
|
|
|
|
ScrollPositionController scrollPositionController = null;
|
2017-08-02 17:21:45 +08:00
|
|
|
|
|
|
|
|
|
new void Awake()
|
|
|
|
|
{
|
|
|
|
|
scrollPositionController.OnUpdatePosition.AddListener(UpdatePosition);
|
2017-08-08 02:33:53 +08:00
|
|
|
|
|
|
|
|
|
// Add OnItemSelected event listener
|
|
|
|
|
scrollPositionController.OnItemSelected.AddListener(CellSelected);
|
|
|
|
|
|
2017-08-02 17:21:45 +08:00
|
|
|
|
SetContext(new Example03ScrollViewContext { OnPressedCell = OnPressedCell });
|
|
|
|
|
base.Awake();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UpdateData(List<Example03CellDto> data)
|
|
|
|
|
{
|
|
|
|
|
cellData = data;
|
|
|
|
|
scrollPositionController.SetDataCount(cellData.Count);
|
|
|
|
|
UpdateContents();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OnPressedCell(Example03ScrollViewCell cell)
|
|
|
|
|
{
|
|
|
|
|
scrollPositionController.ScrollTo(cell.DataIndex, 0.4f);
|
|
|
|
|
context.SelectedIndex = cell.DataIndex;
|
|
|
|
|
UpdateContents();
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-08 02:33:53 +08:00
|
|
|
|
// An event triggered when a cell is selected.
|
|
|
|
|
void CellSelected(int cellIndex)
|
|
|
|
|
{
|
|
|
|
|
// Update context.SelectedIndex and call UpdateContents for updating cell's content.
|
|
|
|
|
context.SelectedIndex = cellIndex;
|
|
|
|
|
UpdateContents();
|
|
|
|
|
}
|
2017-08-02 17:21:45 +08:00
|
|
|
|
}
|
|
|
|
|
}
|