好的,我得到了一张包含编号列表的表格。
No 1 2 5 10 20
If i set columnSortHandler
for the No column using String like this:
columnSortHandler.setComparator(noColumn, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if (o1==o2) {
return 0;
}
if (o1 != null) {
return (o2 != null) ? o1[0].compareTo(o2[0]) : 1;
}
return -1;
}
});
那么它就不会像整数一样排序,而是像字符串一样排序。例如:它将像这样排序:
No 1 10 2 20 5
Then it is not correct.
So tried:
columnSortHandler.setComparator(noColumn, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if (o1==o2) {
return 0;
}
if (o1 != null) {
return (o2 != null) ? Integer.parseInt(o1[0]).compareTo(Integer.parseInt(o2[0]) : 1;
}
return -1;
}
});
但是compareTo不适用于Integer。
所以我的问题是
如何@Override Comparator使CellTable中的列基于整数而不是基于字符串(GWT)排序?
最佳答案
使用Integer.valueOf()
,如下所示
return (o2 != null) ? Integer.valueOf(o1[0]).compareTo(Integer.valueOf(o2[0])) : 1;
而不是
return (o2 != null) ? Integer.parseInt(o1[0]).compareTo(Integer.parseInt(o2[0]) : 1;
Integer.parseInt() returns primitive int not wrapper Integer class.
Cannot invoke compareTo(int) on the primitive type int
有很多方法可以将String
转换为Integer
包装类。
尝试任何一个:
- Integer.valueOf(String)
- 新整数(字符串)
- Integer.getInteger(String)
关于java - 如何@Override Comparator使CellTable中的列基于整数而不是基于字符串(GWT)排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22743000/