文字列リストを selectionCell に渡すと、最初の要素がデフォルト値として選択されます。デフォルト値を変更するにはどうすればよいですか? たとえば、実行時にアイテムをindex=i
デフォルト値として表示したい。
3 に答える
実行時に SelectionCell の値を変更する実際の例があります。行ごとに実行できるアクションのリストが必要です。アクションを選択 (および実行) した後、選択をデフォルト値に戻します。
ArrayList<String> options = new ArrayList<String>();
options.add("Choose...");
options.add("Action 1");
options.add("Action 2");
final SelectionCell cell = new SelectionCell(options);
Column<MyObject, String> column = new Column<MyObject, String>(cell) {
@Override
public String getValue(MyObject object) {
return null;
}
};
column.setFieldUpdater(new FieldUpdater<MyObject, String>() {
@Override
public void update(final int index, MyObject object, String value) {
// perform selected action
// action name is stored in the `value` parameter
// ...
// back to default value
cell.clearViewData(object);
// ... or back to other value
// cell.setViewData(object, "Action 1");
table.redrawRow(index);
}
});
table.addColumn(column, "Test");
アクションはupdate
メソッドに接続されているため、選択した値が変更された場合にのみ起動されることに注意してください。デフォルト値 ( ) で起動されることはありません"Choose..."
。
そのセルにインデックスを設定する方法はありません
そこでは文字列のみを使用できます
SelectionCell statusOptionsCell = new SelectionCell(statusType);
Column<InvitedUser, String> statusColumn = new Column<Object, String>(
statusOptionsCell) {
@Override
public String getValue(Object object) {
return object.getStatus(); //value set at runtime
}
};
そして、配列のみが必要な場合
String[] myaaray= {"one","two","three"};
SelectionCell statusOptionsCell = new SelectionCell(statusType);
Column<InvitedUser, String> statusColumn = new Column<Object, String>(
statusOptionsCell) {
@Override
public String getValue(Object object) {
return st[1]; //pass integer as i here at runtime
}
};
選択セルは、セル ウィジェットで使用されます。それでは、例として CellTable を見てみましょう。セル テーブルでは、各行が 1 つのレコード、つまりモデル/POJO に対応します。各列は、モデル/POJO の 1 つのプロパティに対応します。したがって、選択セル列はモデル内の 1 つのプロパティにバインドする必要があります。
Set that property's value to whatever you want as a default value before supplying that model to the Cell Table
.
モデルのプロパティを設定すると、そのすべてのセル テーブルと co の責任で、選択セルに値が設定されます。