1

交互に表示したい 2 つの ArrayLists があります。クリックすると、最初のリストを2番目のリストに交換するボタンがあります。

私は2つのアプローチを試みましたが、ほとんど成功しませんでした。

最初のアプローチは ListDataProvider を作成し、それをリストとテーブルにバインドすることでしたが、ボタンがクリックされてリスト構造が変更されても何も起こりませんでした./

私の 2 番目のアプローチは、通常の CellList に固執し、単純に行数と行データをリセットすることでした。このアプローチは、ボタンを 2 回クリックすると機能します。

私は何を見落としているでしょうか?どんな助けでも大歓迎です!

コードは次のとおりです。

これは、ArrayList を CellList に再追加しようとしたときです。

public void refreshTable()
{
    systemTable.setRowCount(SYSTEMS.size(), true);
    systemTable.setRowData(0, SYSTEMS);
}

次のように ListDataProvider で試しました。

 private ListDataProvider<String> listDataProvider = new ListDataProvider<String>(SYSTEMS);

public void refreshTable()
{
    listDataProvider.refresh();
}
4

1 に答える 1

2

おそらくこの問題に直面しています。

両方のバージョンが動作するはずです。setRowData()最初の解決策として、呼び出しを逆にしてみてください (最初に呼び出してから を呼び出しますsetRowCount())。

public void refreshTable()
{
    systemTable.setRowData(0, SYSTEMS);
    systemTable.setRowCount(SYSTEMS.size(), true);
}

2 番目の解決策については、 を呼び出すのを忘れたと思いますaddDataDisplay。基になるデータを変更するには、次の方法があります。

1.) 新しい ListDataProvider を作成し、設定しDataDisplayます (refresh を呼び出す必要はありません):

private ListDataProvider<String> listDataProvider = new ListDataProvider<String>(SYSTEMS);
listDataProvider.addDataDisplay(systemTable);

2.) 既存の ListDataProvider の新しいリストを設定します。

   listDataProvider.setList(SYSTEMS);

3.) 既存のリストを変更します。

   listDataProvider.getList().add/remove etc 
于 2012-05-24T11:24:29.840 に答える