2015-11-05 45 views
-4

我...这是可能获得列表视图项目在Android的子位置?

  1. 问题1 - > ListView项A)复选框1 b)中复选框2 c)中复选框3 d)复选框4
  2. 问题2 - >列表视图项一)复选框1 b)中复选框2 c)中复选框3 d)复选框4 E)复选框5 F)复选框6
    克)复选框7小时)复选框8ⅰ)复选框9
  3. 问题3 - > ListView项一)单选按钮1 b)中单选按钮2 C)单选按钮3
  4. 问题4 - > ListView项a)检查b牛图1b)复选框2
@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; 
        } 

我想单选按钮的位置和复选框。因为那些在列表中,所以当我滚动那些会自动取消选中。我知道getView()具有将视图的属性,但我想要做的这一个...我是新的这个概念,请帮我找到解决办法......

在此先感谢。 ..

+0

感谢您投下了这个问题。但我过去几天试过这个,但无法获得解决方案。如果你知道解决办法,请张贴...我会更新我的问题与代码... –

+0

保持数组来保存所有的值,并尝试设置转接器内的值。不要在getview中初始化数组列表。尝试加载构造函数中的值。你的代码也有点混乱。正是你正在尝试做 – Madhu

回答

1

您还可以管理自己的看法。为您的物品创建每一个独特的视图,不回收view.This将防止您的复选框得不到检查

private Map<Integer, View> myViews = new HashMap<Integer, View>(); 

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    View view = myViews.get(position); 
    if (view == null) { 
     view = myInflater.inflate(R.layout.list_add_friends_row, null); 
     //don't need use the holder anymore. 

     //Your code 
     myViews.put(position, view); 

    } 
    return view; 
} 
+0

@ NEHA特亚吉OMG。它解决了。非常感谢您的回答Nega。它结束了我过去两天查询的搜索。非常感谢... –

+0

它总是感觉很棒:) –

相关问题