在我的项目中,我有一个TableViewer
,它显示来自数据库的大约1k行数据。 ContentProvider
是ArrayContentProvider
。
当我将List(setInput()
对象上的TableViewer
)更改为具有相同数据量的另一个时,一切都正常。但是当我想用List<T>
更新它,其大小与前一个不同时,应用程序会冻结大约10倍的时间来更改相同数量的数据。
第一个列表的大小为1k,第二个列表的大小约为960.执行会直接在setInput()
方法上冻结。
有人知道为什么会这样吗?
答案 0 :(得分:1)
我认为原因是当您设置具有不同大小的List时,将重新创建整个本机TableItem。因此,为了加快您的表,您应该使用SWT.Virtual样式表。使用虚拟表时,仅创建显示的表项。滚动时会创建其他内容。