0

ZK フレームワークを初めて使用するのですが、後でビューで並べ替えられたリストボックスがあり、listBox をコントローラーに渡します。ユーザーがアイテムを選択する必要がありますが、モデルではアイテムは並べ替えと同期されますが、getSelection で配列は、元のデータに挿入された並べ替えと同期されていません。ここにコードがあります。

public void createPDFFromModel(Listbox list,String ref){                
    BindingListModelList model = (BindingListModelList)list.getModel();
    for(int i=0;i<model.size();i++){
        System.out.println((((ZamoraListitemAdapter)model.get(i)).getName()));
    }  
    System.out.println("-------------------------------------------");
    //Data Printed OK.
    java.util.ArrayList<ZamoraListitemAdapter>selections = new java.util.ArrayList<ZamoraListitemAdapter>(model.getSelection());
    for(int i=0;i<selections.size();i++){
        ZamoraListitemAdapter clazz = (ZamoraListitemAdapter)selections.get(i);
        System.out.println(clazz.getName());
        //Out of sync with model and with sorting 
    }

私の質問は、getSelection モデルでの並べ替え後にアイテムの順序を取得する方法です。私はZK 5.2.8を使用しています

4

2 に答える 2

0

作成後に並べ替える ことができます。 他の/より良い解決策があるかもしれませんが、 もっと助けが必要な場合は、達成しようとしていることを書かなければなりません。selections

コメントに返信

私が言いたいのは

ArrayList<ZamoraListitemAdapter>selections = 
new ArrayList<ZamoraListitemAdapter>(model.getSelection());
Collections.sort(selections);

選択しselectionsListすべてのアイテムも同様です。同じ方法でアイテムを比較する限り
、正しい順序になっているはずです。

並べ替えではなく並べ替えを意味する場合...

私にとって、並べ替えとは、自動でアルゴリズムによって行われることを意味します。
代わりに並べ替えとは、たとえば、オブジェクトをドラッグすることを意味します。

再注文を意味し 、アイテムが選択されModelているかどうかを知る方法がない場合は、おそらく何か間違ったことをしました。 Cos zkには2つのクラスがあり 、選択動作に必要なすべてのメソッドを実装します。プログラマーがそれらの1つに固有の選択可能なものを必要とする場合は、カスタムが 最も簡単な方法です。

ListModelListAbstractListModel

ModelModel

これも読む必要があります。

于 2013-02-14T14:22:46.070 に答える
0
model.getSelection()

Set (順序なし) を返します。代わりに使用します

model.getInnerList()

ListModeList を返す

于 2013-02-14T18:26:23.307 に答える