UE4中UMG的ListView控件,很强大也很方便,但是第一次用的时候,会有点晕,在我多方查证以及实验终于大致了解了他的使用方式。
其实UE4的ListView就是一个虚拟列表,如果有过平台界面开发相关经验的同学,对于虚拟列表这个名词再熟悉不过了,他是列表控件按需显示Item的一种实现,只对可见区域渲染,对非可见区域不渲染或者部分渲染;试想一下,当我们的数据量超过上万乃至上10万条时,如果我们将数据全部一次性添加到列表中,轻则耗时过长,重则程序直接卡死,用户体验就不用说了,对资源造成了十分严重的浪费。
我曾经研究过Windows平台下某DirectUI界面库中的VirtualList源代码,大致的实现思路就是,程序开始时创建固定数量的Item控件,添加到ListView中,然后根据用户滚动条滚动的位置,动态在相应的Item控件中更新数据,其实跟UE的ListView实现原理产不多,下面看一下UE中的ListView的使用方法
一.UE4 ListView使用必要的三样东西
-
ListView:含有ListView控件的Widget
-
EntryWidget:相当于上面所说的,Windows平台下创建的固定数量的Item控件;如果要变成ListView可用的Entry,必须要继承IUserObjectListEntry接口
</