TabeViewer交替行颜色算法



我在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;  }

   }
}

我希望它能帮助不止一个

最新更新