ユーザーが記入するアンケートを作成しています。要件の1つは、ユーザーが質問に回答すると記入される進行状況バーを実装することです。
頭を完全に包み込むことができないバグは、リストボックスにあります。値を選択するとカウンターは問題なく上昇しますが、別の値を選択すると、同じ値を維持する必要があるときにカウンターが再び増加します。
以下の基本的な例:
- 値を選択
- TRUE
- FALSE
完了率:0%(デフォルト値として「値の選択」を含むデフォルトのドロップダウンリスト)
- TRUE
- 値を選択
- FALSE
完了率:2%
- FALSE
- 値を選択
- TRUE
完了率:4%(質問はすでに回答されているため、2%にする必要があります)
これは、変更ハンドラーのコードです。
final ValueChangeHandler<Boolean> booleanChangeHandler = new ValueChangeHandler<Boolean>()
{
@Override
public void onValueChange(final ValueChangeEvent<Boolean> event)
{
Boolean value = event.getValue();
changeAnsweredQuestionTotal(String.valueOf(value));
}
};
そして、これはプログレスバーを変更します。また、テキストボックスが入力されているかどうかを確認するためにも使用します。
public void changeAnsweredQuestionTotal(String value)
{
//Window.alert(value);
boolean isEmpty = (value == null) || value.equalsIgnoreCase("Null") ? true : value.isEmpty();
Integer answered;
Integer totalQuestions;
String text = this.getQuestionsAnswered().getText().substring(0, 2);
text= text.replaceAll("\\s+", "");
answered = text.isEmpty() ? 0 : Integer.valueOf(text);
answered = (answered < 0) ? 0 : answered;
totalQuestions = this.getTotalQuestions().getValue().isEmpty() ? 0 : Integer.valueOf(this.getTotalQuestions().getValue());
String result;
if (isEmpty)
{
answered = answered - 1;
answered = (answered < 0) ? 0 : answered;
result = answered + " questions answered. ";
}
else
{
if (!value.equalsIgnoreCase("null"))
{
answered = answered > totalQuestions ? totalQuestions : answered + 1;
}
result = answered + " questions answered. ";
}
Integer percent = (answered*100)/totalQuestions;
percent = (percent > 100) ? 100 : percent;
}
どんな助けでも大歓迎です。