0

我已经在我的 TableViewer 上实现了交替行颜色,我用 30 000 行做了一些测试:

没有颜色交替我需要 20 秒来加载表格和 1 m 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;
    }
}

}
4

1 回答 1

0

我已经实现了自己的方法,你怎么看?我将 TableViewer 的加载时间减少了一半

我们不需要检查元素的索引值,这需要一些时间,每次列索引为空(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;  }


   }

}

我希望它会帮助不止一个

于 2013-06-27T14:02:41.747 回答