树形结构使用插件Virtualizing Tree View Self Demo
前段时间公司要求开发了个本地视频播放器,使用Virtualizing Tree View插件编辑了视频目录,以下附部分核心代码
事件监听、数据绑定、目录展开、目录点击、双击、事件解除监听
private void TreeViewAddEvent()
{
//数据绑定
_tree.ItemDataBinding += DataBinding;
//选中
_tree.SelectionChanged += SelectionChanged;
//展开
_tree.ItemExpanding += Expanding;
//双击
VirtualizingItemContainer.DoubleClick += DoubleClick;
_tree.Items = _treeNodes;
}
/// <summary>
/// 双击
/// </summary>
/// <param name="_sender"></param>
/// <param name="e"></param>
public void DoubleClick(VirtualizingItemContainer _sender, PointerEventData e)
{
if (_sender.Item == null) return;
if (_currentNode._type == Org.file)
{
}
}
/// <summary>
/// 解除绑定
/// </summary>
private void TreeViewRemoveEvent()
{
_tree.ItemDataBinding -= DataBinding;
_tree.SelectionChanged -= SelectionChanged;
_tree.ItemExpanding -= Expanding;
VirtualizingItemContainer.DoubleClick -= DoubleClick;
}
/// <summary>
/// 展开和关闭
/// </summary>
/// <param name="_sender"></param>
/// <param name="e"></param>
private void Expanding(object _sender, VirtualizingItemExpandingArgs e)
{
var _data = e.Item as TreeView_Node;
if (_data == null) return;
e.Children = _data._children;
}
/// <summary>
/// 选中
/// </summary>
/// <param name="_sender"></param>
/// <param name="e"></param>
public void SelectionChanged(object _sender, SelectionChangedArgs e)
{
if (e.NewItem == null) return;
var _treeNode = e.NewItem as TreeView_Node;
_currentNode = _treeNode;
if (_currentNode._type == Org.file)
{
}
}
/// <summary>
/// 绑定数据
/// </summary>
/// <param name="_sender"></param>
/// <param name="e"></param>
private void DataBinding(object _sender, VirtualizingTreeViewItemDataBindingArgs e)
{
var _treeNode = e.Item as TreeView_Node;
if (_treeNode == null) return;
e.HasChildren = _treeNode._children.Count > 0;
var _item = e.ItemPresenter.GetComponent<TreeView_UIItem>();
_item._tetx.text = _treeNode._name;
if (_treeNode._type == Org.file)
{
_item._icon.gameObject.SetActive(false);
}
else if (_treeNode._type == Org.folder)
{
_item._icon.sprite = _item.icon_file;
_item._icon.gameObject.SetActive(true);
}
}
插件具体使用Demo下载链接:VirtualizingTreeViewSelfDemo-互联网文档类资源-CSDN下载