2016-05-22 2 views
0

ゴールリンクボタン

、私は5 itemscustom list viewを作成しました。 Each Itemにはquestion, choices, checkボタンがあります。

@Override 
public View getView(int pos, View row, ViewGroup parent){ 

    this.view = row; 
    ViewHolder viewHolder = null; 

    if(row == null) { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(R.layout.list_item_row_qs, null); 
     viewHolder = new ViewHolder(); 
     viewHolder.chapName=(TextView) row.findViewById(R.id.question); 
     viewHolder.rb0 = (RadioButton) row.findViewById(R.id.choice0); 
     viewHolder.rb1 = (RadioButton) row.findViewById(R.id.choice1); 
     viewHolder.rb2 = (RadioButton) row.findViewById(R.id.choice2); 
     viewHolder.rb3 = (RadioButton) row.findViewById(R.id.choice3); 
     viewHolder.button = (Button) row.findViewById(R.id.check); 
     row.setTag(viewHolder); 
    } 
    else { 
     viewHolder = (ViewHolder)row.getTag(); 
    } 
    viewHolder.chapName.setText(questions[pos].getQuestionDescr()); 
    viewHolder.rb0.setText(questions[pos].getChoice()[0]); 
    viewHolder.rb1.setText(questions[pos].getChoice()[1]); 
    viewHolder.rb2.setText(questions[pos].getChoice()[2]); 
    viewHolder.rb3.setText(questions[pos].getChoice()[3]); 
    //viewHolder.button.setId(pos); 
    //viewHolder.rg.setId(pos); 
    /* viewHolder.button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Toast.makeText(context, ((RadioButton) view.findViewById(((RadioGroup) view.findViewById(R.id.rg)).getCheckedRadioButtonId()))+"", Toast.LENGTH_LONG).show(); 

     } 
    });*/ 

    return row; 
} 

これは私のアイテムを設定する方法です。ご覧のとおり、私はTextView, 1 radio group, 4 radio button, 1 buttonをビューホルダーに持っています。

Questionは、各行のすべての内容を保持するクラスです。だから私はarray of question objects to this adapterを渡す。

疑い、ユーザがチェックボタンをクリックすると、それが答えに対して選択したラジオボタンやチェックを見つける必要があります

。回答は質問クラスにも含まれます。結果をよりよくしてください。

どうすればよいですか?私はこれに固執しています。私はそれをリンクする方法を見つけることができませんか?

それはhtmlであれば、私はrow itemを保持するdivためIdを設定でき、ボタンのクリックから、私は親IDを取得し、親IDから、私はラジオボタンを選択し得ることができ、私は選択に対して保存された答えを確認することができます値。

詳しい説明

Question1 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question2 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question3 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question4 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question5 
    choice0 choice1 
    choice2 choice3 
        CHECK 

これは私のレイアウトは次のようになります方法です。私のgetViewメソッドで見てきたように、レイアウト自体の要素にはidを与えました。だから、すべての要素のために同じIDを取る:(

任意の提案を

答えて

0

OnClickがボタンを「チェック」、すなわち、クリックされたViewを渡し

をだからあなたが行うことができます:?。

また

public void onClick(View v) { 
    View rowView = (ViewGroup) v.getParent(); 
    RadioGroup group = (RadioGroup) rowView.findViewById(R.id.rg); 
    long selectedId = group.getCheckedRadioButtonId(); 
    // Check if selected id is correct 
    Toast.makeText(context, "Correct!", Toast.LENGTH_LONG).show(); 
} 
OnClickコードが同じであるため、それは一度だけ、それを作成し、 ViewHolderを作成するときに、それをフックアップするためのより良い練習だ。

関連する問題