0

我有这个代码:

ListHandler<List<String>> columnSortHandler = new ListHandler<List<String>>(list);

for (int k=0; k<10; k++){
         IndexedColumn myColumn=new IndexedColumn(k+1);
         table.addColumn(myColumn, "col "+k);
         myColumn.setSortable(true);

         columnSortHandler.setComparator(myColumn, new Comparator<List<String>>() {

             public int compare(List<String> o1,     List<String> o2) {
                 return o1.get(0).compareTo(o2.get(0));
             }

         });
}

当我进行排序时,调用了排序操作,表进行了排序,但该列中值的顺序不正确。所以我怀疑可能是我把columnSortHandler.setComparator里面放了一个循环&这导致了问题。

我如何解决它?

4

1 回答 1

2

您的问题是,每次比较时,您都会比较String列表中的第一个。假设列表中的每个对象都代表该索引列的值,那么您应该只更改您在比较器中获得的索引。

假设我上面说的是对的,那么您可能想看看我在此处发布的答案。

在您的情况下,您的比较器应该是:

columnSortHandler.setComparator(myColumn, new Comparator<List<String>>(){

    public int compare(List<String> o1, List<String> o2) {

          if (o1 == o2) {
            return 0;
          }

          // Compare the column.
          if (o1 != null) {
            return (o2 != null) ? o1.get(k).compareTo(o2.get(k)) : 1;
          }
          return -1;
    }


});

现在我不确定在上面的代码中k是否应该只是kk+1。查看您发布的代码,我不清楚您的第一列的值是在索引 0 还是 1。

于 2013-04-22T14:38:12.627 回答