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べきかどうかはわかりません。投稿したコードを見ると、最初の列の値がインデックス 0 か 1 かはわかりません。kk+1

于 2013-04-22T14:38:12.627 に答える