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
    }