Android 如何获取动态添加的复选框和单选按钮作为Listview项子位置的位置?
你怎么能Android 如何获取动态添加的复选框和单选按钮作为Listview项子位置的位置?,android,getview,Android,Getview,你怎么能 在getView()中动态添加复选框 设置具有不同计数的复选框的文本 在解释中 在列表视图中 问题1需要5个复选框 问题2需要7个复选框 问题3需要3个复选框 问题4需要8个复选框 这就是我想要的,我用了密码 @SuppressWarnings("deprecation") @Override public View getView(final int position, View convertView, ViewGroup parent) { V
getView()中动态添加复选框
复选框的文本
在解释中
- 问题1需要5个复选框
- 问题2需要7个复选框
- 问题3需要3个复选框
- 问题4需要8个复选框
@SuppressWarnings("deprecation")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
view = mLayoutInflater.inflate(R.layout.question_items, null);
final TextView question_number = (TextView) view.findViewById(R.id.qno_text);
final TextView question = (TextView) view.findViewById(R.id.qstn_text);
LinearLayout linear_layout = (LinearLayout) view.findViewById(R.id.linear_vertical);
question_number.setText(question_items.get(position).getQuestionNo());
question.setText(question_items.get(position).getQuestion());
String single_or_multiple = question_items.get(position).getSingleSelect();
if(single_or_multiple.equals("0")) {
final ArrayList<String> answer_check_box = new ArrayList<>();
final ArrayList<String> questions = new ArrayList<>();
final ArrayList<String> questions_in_ques_and_ans = new ArrayList<>();
final ArrayList<String> questions_and_checking = new ArrayList<>();
checkBoxState = new boolean[question_items.get(position).getOptionList().size()];
final int check_size = question_items.get(position).getOptionList().size();
Log.d("Size", String.valueOf(check_size));
for(int i = 0; i<question_items.get(position).getOptionList().size(); i++) {
check_box = new CheckBox(context);
check_box.setGravity(Gravity.CENTER);
check_box.setBackgroundDrawable(getApplication().getResources().getDrawable(R.drawable.fifth_username));
check_box.setPadding(8, 8, 8, 8);
check_box.setText(question_items.get(position).getOptionList().get(i).getOPTIONS());
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
params.setMargins(10, 10, 10, 10);
check_box.setLayoutParams(params);
check_box.setId(i);
check_box.setTag(i);
check_box.setChecked(false);
check_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int id = buttonView.getId();
Log.d("ID", String.valueOf(id));
tag_val = (int) buttonView.getTag();
String tag_value = String.valueOf(tag_val);
Log.d("TAG", tag_value);
Question_Number = question_number.getText().toString();
Question = question.getText().toString();
String value = "";
if(isChecked) {
value = question_items.get(position).getOptionList().get(id).getOPTIONS();
Log.d("checkbox checked value", value);
answer_check_box.add(value);
if(questions.size() > 0) {
if(questions.contains(Question)) {
questions.remove(Question);
questions.add(Question);
} else {
questions.add(Question);
}
} else {
questions.add(Question);
}
Log.d("Answers Checked", answer_check_box.toString());
Log.d("Question Checked", questions.toString());
Answer = answer_check_box.toString();
}else {
value = question_items.get(position).getOptionList().get(id).getOPTIONS();
Log.d("checkbox Unchecked value", value);
answer_check_box.remove(value);
if(answer_check_box.size() > 0) {
} else {
questions.remove(Question);
}
Log.d("Answers Unchecked", answer_check_box.toString());
Log.d("Question UnChecked", questions.toString());
Answer = answer_check_box.toString();
}
if(questions_and_checking.size() > 0) {
Log.d("Size","above 1");
for(int check = 0; check < questions_and_checking.size(); check++) {
questions_in_ques_and_ans.add(questions_and_checking.get(check));
}
Log.d("Questions check", questions_in_ques_and_ans.toString());
Log.d("Que array", ques_and_ans.toString());
if(questions_in_ques_and_ans.contains(Question)) {
Log.d("Contains","Que");
int index = ques_and_ans.indexOf(ques_and_ans.get(position));
Log.d("Index", String.valueOf(index));
ques_and_ans.remove(index);
Question_and_Answer item = new Question_and_Answer();
item.setQustionNumber(Question_Number);
item.setQuestionTitle(Question);
item.setOptionValue(Answer);
ques_and_ans.add(item);
questions_and_checking.add(Question);
} else {
Log.d("Not Contains","Que");
Question_and_Answer item = new Question_and_Answer();
item.setQustionNumber(Question_Number);
item.setQuestionTitle(Question);
item.setOptionValue(Answer);
ques_and_ans.add(item);
questions_and_checking.add(Question);
}
} else {
Log.d("Size", "0");
Question_and_Answer item = new Question_and_Answer();
item.setQustionNumber(Question_Number);
item.setQuestionTitle(Question);
item.setOptionValue(Answer);
ques_and_ans.add(item);
questions_and_checking.add(Question);
Log.d("Check After First add", ques_and_ans.toString());
}
}
});
linear_layout.addView(check_box);
}
} else {
radio_group = new RadioGroup(context);
for(int i=0; i<question_items.get(position).getOptionList().size(); i++) {
radio_button = new RadioButton(context);
radio_button.setGravity(Gravity.CENTER);
radio_button.setBackgroundDrawable(getApplication().getResources().getDrawable(R.drawable.fifth_username));
radio_button.setPadding(8, 8, 8, 8);
radio_button.setText(question_items.get(position).getOptionList().get(i).getOPTIONS());
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
params.setMargins(10, 10, 10, 10);
radio_button.setLayoutParams(params);
radio_group.addView(radio_button);
}
linear_layout.addView(radio_group);
radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup rgp, int checkedId) {
Question_Number =question_number.getText().toString();
Question = question.getText().toString();
radioButtonID = radio_group.getCheckedRadioButtonId();
View radioButton = radio_group.findViewById(radioButtonID);
idx = radio_group.indexOfChild(radioButton);
Log.d("id", String.valueOf(idx));
String answer = question_items.get(position).getOptionList().get(idx).getOPTIONS();
Toast.makeText(getApplicationContext(), answer, 2).show();
Answer = answer;
Question_and_Answer item = new Question_and_Answer();
item.setQustionNumber(Question_Number);
Log.d("Q_no", Question_Number);
item.setQuestionTitle(Question);
Log.d("Qstn", Question);
item.setOptionValue(Answer);
Log.d("Answer", Answer);
ques_and_ans.add(item);
}
});
}
return view;
}
@SuppressWarnings(“弃用”)
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图=转换视图;
视图=MLAyoutFlater.充气(R.layout.question_项目,空);
最终文本视图问题编号=(文本视图)视图.findViewById(R.id.qno\u文本);
最终的TextView问题=(TextView)view.findViewById(R.id.qstn_text);
LinearLayout linear\u布局=(LinearLayout)视图。findViewById(R.id.linear\u垂直);
question_number.setText(question_items.get(position.getQuestionNo());
question.setText(question_items.get(position.getQuestion());
String single_或_multiple=question_items.get(position.getSingleSelect();
if(单个或多个等于(“0”)){
最终ArrayList答案\u复选框=新建ArrayList();
最终ArrayList问题=新建ArrayList();
最后的ArrayList问题和新ArrayList()中的问题;
最终ArrayList问题和检查=新建ArrayList();
checkBoxState=new boolean[question_items.get(position.getOptionList().size()];
final int check_size=question_items.get(position.getOptionList().size();
Log.d(“大小”,String.valueOf(检查大小));
对于(int i=0;i 0){
如果(问题.包含(问题)){
问题。删除(问题);
问题.加入(问题);
}否则{
问题.加入(问题);
}
}否则{
问题.加入(问题);
}
Log.d(“已选中答案”,答案复选框.toString());
Log.d(“已检查问题”,questions.toString());
答案=答案复选框。toString();
}否则{
value=question_items.get(position).getOptionList().get(id).getOPTIONS();
Log.d(“复选框未选中值”,值);
回答复选框。删除(值);
如果(回答复选框.size()>0){
}否则{
问题。删除(问题);
}
Log.d(“未选中的答案”,answer_check_box.toString());
Log.d(“未选中问题”,questions.toString());
答案=答案复选框。toString();
}
如果(问题和检查.size()>0){
对数d(“尺寸”,“大于1”);
for(int check=0;checkCheckBox cb = new CheckBox(this);
cb.setText("some text");
linear_layout.addView(cb);
for ( int i = 0; i < question_items.get(position).getQuestionNo(); i++ ) {
//code to add a single checkbox
}