0
複数の選択肢のためにユーザーに表示されるチェックボックスが20あるアンドロイドアプリを作成しています。チェックボックスを動的に表示するようにプログラムしましたが、問題はチェックボックスの値を取得する方法です。私はこれまでこのコードを試しました。動的にチェックボックスを追加し、アンドロイドのチェックされていない値を取得する
私のグローバル変数は
ArrayList<MyCheckBox> listOfCheckedItem;
private int CHECKBOX_POSITION;
と、私はこの
listOfCheckedItem = new ArrayList<>();
listOfCheckedItem.add(new MyCheckBox(true, "One")); //(isChecked,text)
listOfCheckedItem.add(new MyCheckBox(false, "Two"));
listOfCheckedItem.add(new MyCheckBox(true, "Three"));
listOfCheckedItem.add(new MyCheckBox(false, "four"));
listOfCheckedItem.add(new MyCheckBox(false, "five"));
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
for (int i = 0; i < listOfCheckedItem.size(); i++) {
CHECKBOX_POSITION = i;
MyCheckBox myCheckBox = listOfCheckedItem.get(i);
CheckBox checkBox = new CheckBox(this);
checkBox.setChecked(myCheckBox.getIsChecked());
checkBox.setText(myCheckBox.getText());
selectCategoryLayout.addView(checkBox, params);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
listOfCheckedItem.get(CHECKBOX_POSITION).setIsChecked(isChecked);
}
});
}
のような何かをしたと私はこの
のようでしたチェックボックスの値を取得するには、チェックボックスを追加するためですStringBuilder builder = new StringBuilder();
for (int i = 0; i < listOfCheckedItem.size(); i++) {
MyCheckBox mcb = listOfCheckedItem.get(i);
builder.append("\nstatus: " + mcb.getText() + " is " + mcb.getIsChecked());
}
resultView.setText(builder.toString());
初めてアプリケーションを実行すると、すべてのチェックボックスが正しく表示されます。ボタンをクリックしてチェックボックスをオンにすると、正しい結果が表示されますが、チェックボックスをオンまたはオフにすると結果を取得するためにボタンを再度クリックすると、最後のチェックボックスの値が変更されます。私が見逃していることは分かりません。
のようなあなたの動的に生成されたチェックボックスにタグ属性を追加しました。この
を行います。そのタグでビューを見つけます。 –