チェックグループがあり、グループ内のチェックボックスを選択すると、選択/チェックされたチェックボックスの数を取得したい。
以下のコードでは、選択した数のチェックボックスを取得できますが、選択を解除または削除すると、まだ選択されていることがわかります。
例 : 2 を選択しましたが、2 つの文字列が選択されました。
1 つのチェックボックスの選択を解除しても、2 つの文字列が選択されています。1つの文字列がチェックされることを期待していますが。
コードを以下に示します。
final CheckGroup myGroup = new CheckGroup("group", new ArrayList()) {
@Override
protected Collection<String> convertValue(String[] values) throws ConversionException {
Collection<String> myCollection = super.convertValue(values);
checkedString.addAll(myCollection);
HashMap<Integer, String> myTempList = new HashMap<Integer, String>();
for (String myString : checkedString) {
myTempList.put(myString.getSystemId(), myString);
}
checkedString.clear();
for (Entry<Integer, String> myEntry : myTempList.entrySet()) {
checkedString.add(myEntry.getValue());
}
return checkedString;
}
@Override
protected void onSelectionChanged(Collection newSelection) {
newSelection = checkedString;
}
@Override
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
};
add(myForm);
myForm.add(myGroup);