TableView排序

给TableViewer添加排序器的方法:

1.创建一个ViewerSoorter类或者其子类;

2.把该类的对象赋值给TableViewer即可,如下所示:

 

org.eclipse.jface.viewers.ViewerSorter

 

 

viewer.setSorter(sorter);

 

public class AddressViewerSorter extends ViewerSorter {

private static final String TAG_DESENDING = "descending";

private static final String TAG_INDEX = "columnIndex";

private static final String TAG_CATEGORY = "category";

private static final String TAG_TRUE = "true";

 

private class SortInfo {

int columnIndex;

Comparator comparator;

boolean descending;

}

 

private TableViewer viewer;

private SortInfo[] infos;

private SortInfo currSort;

 

public AddressViewerSorter(TableViewer viewer, TableColumn[] columns,

Comparator[] comparators) {

this.viewer = viewer;

infos = new SortInfo[columns.length];

for (int i = 0; i < columns.length; i++) {

infos[i] = new SortInfo();

infos[i].columnIndex = i;

infos[i].comparator = comparators[i];

infos[i].descending = false;

createSelectionListener(columns[i], infos[i]);

}

currSort = infos[0];

}

 

public int compare(Viewer viewer, Object address1, Object address2) {

int result = currSort.comparator.compare(address1, address2);

if (result != 0) {

if (currSort.descending)

return -result;

return result;

}

return 0;

}

 

private void createSelectionListener(final TableColumn column,

final SortInfo info) {

column.addSelectionListener(new SelectionAdapter() {

public void widgetSelected(SelectionEvent e) {

currSort = info;

info.descending = !info.descending;

                                //调用该方法才能使viewer调用compare重新排序

viewer.refresh();

}

});

}

 

}

你可能感兴趣的:(tableview)