2013-06-26 39 views
0

我已经实现在我的TableViewer交替行颜色,我已经取得了一些测试用30个000行:TabeViewer交替行颜色算法

没有颜色交替我需要20秒来加载表1米40秒颜色交替。

所以我的算法是不适合这种规模的表进行了优化,我想实现这个snippet

表现出了Methode但它是不一样的情况下,我,我有推广的ObservableMapLabelProvider(我使用了一个数据绑定,

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

} 

回答

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


    } 

} 

我希望这将有助于不止一个