我在TableViewer上实现了交替的行颜色,我用30000行进行了一些测试:
在没有颜色交替的情况下,我需要20秒来加载表格,在颜色交替的条件下需要1米40秒。
因此,我的算法并没有针对这种大小的表进行优化,我想实现这个片段中演示的方法
但情况不同,我扩展了ObservableMapLabelProvider(我使用了DataBinding,
public class CompteEntrysLabelProvider extends ObservableMapLabelProvider
implements IColorProvider {
@Override
public Color getBackground(Object element) {
WritableList list = new WritableList() ;
list= (WritableList) this.tableViewer.getInput();
int index = list.indexOf(element);
if ((index % 2) == 0) {
return gray; // color
} else {
return null;
}
}
}
我已经实现了自己的方法,你觉得怎么样?我将TableViewer的加载时间减少了的一半
我们不需要检查元素的索引值,这需要一些时间,每次列索引为null(0)时,这意味着一个新行开始,所以我们替换行颜色。
public class CompteEntrysLabelProvider extends ObservableMapLabelProvider
implements IColorProvider {
private boolean isEven = true;
public String getColumnText(Object element, int columnIndex) {
switch (columnIndex) {
case 0:
isEven = !isEven; //toggle isEven value each first column
//get column 3 text
case 1:
//get column 2 text
case 2:
//get column 3 text
case 3:
default: return "";
}
@Override
public Color getBackground(Object element) {
//based on IsEven value we alternate the row color
if (isEven) { return gray;} else {return null; }
}
}
我希望它能帮助不止一个