3
我試圖實現一個tableviewer,它可以根據用戶點擊列標題的順序對值進行排序。 例如如果有三列第一列,第二列和第三列,並且用戶點擊了以下順序第3列,第2列,第1列中的列,則第3列值的行首先被排序,然後第2列和最後第1列。如何按JFace的多列進行排序TableViewer
我已經overided中如下因素比較的方式方法:
protected int doCompare(Viewer tableViewer, Object row1, Object row2)
{
SampleTableLabelProvider labelProvider = SampleTableLabelProvider ((TableViewer) tableViewer).getLabelProvider());
boolean areBothRowsEqual = false;
for(String orderedColumn : getOrderedList()) // getOrderedList() stores the column names in the order in which they are clicked by user
{
int orderedColumnIndex = // logic to get the index of orderedColumn in the tableViewer ;
if(compareStrings(labelProvider, row1, row2, orderedColumnIndex) == 0)
{
areBothRowsEqual = true;
}
else
{
areBothRowsEqual = false;
break;
}
}
if(areBothRowsEqual)
{
return compareStrings(labelProvider, row1, row2, columnIndex);
}
else
{
return 0;
}
}
這種邏輯是行不通的,這是發生了什麼事: 對於例如第3列由用戶選擇,並且該列被排序。但是下一次當另一列聲稱column2被點擊時,TableViewer中的對象row1和row2不會以最新的有序格式顯示。
我該如何做到這一點?
getOrderedList()是否按正確的順序返回正確的列? –
@RüdigerHerrmann是的,它確實以正確的順序返回了正確的列。 – user1168608
@RüdigerHerrmann你認爲我錯過了什麼嗎? – user1168608