2016-05-22 8 views
0

TorLink-Taste mit ausgewähltem Optionsfeld in der Listenansicht

Zum Zweck lernen, ich habe ein custom list view mit 5 items erstellt. Each Item wird question, choices, check Schaltfläche haben.

@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; 
} 

So stelle ich meine Artikel ein. Wie Sie sehen, habe ich TextView, 1 radio group, 4 radio button, 1 button im View Holder.

Question ist eine Klasse, die den gesamten Inhalt jeder Zeile enthält. So passiere ich array of question objects to this adapter.

Doubt

Wenn der Benutzer auf einem Scheck Schaltfläche klickt, das ausgewählte Optionsfeld und Kontrollen gegen die Antwort zu finden hat. Die Antwort wird auch Teil der Question-Klasse sein. Bereiten Sie das Ergebnis vor.

Wie mache ich das? Ich stecke darauf fest. Ich bin nicht in der Lage zu finden, wie man es verbindet?

Wenn es html ist, konnte ich Id für div gesetzt, die row item und von Button-Klick hält, werde ich die Eltern Id und von der übergeordneten Id bekommen kann ich Radio-Button erhalten ausgewählt, und ich kann die gespeicherte Antwort gegen den ausgewählten überprüfen Wert.

Weitere Erklärung

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 

Dies ist, wie mein Layout aussehen wird. Wie Sie in meiner getView Methode sehen, habe ich id für die Elemente im Layout selbst angegeben. ?. So ist es gleiche Id für alle Elemente nimmt :(

Irgendwelche Vorschläge

Antwort

0

Die OnClick gibt die View die geklickt wurde, dh die "check" Taste

So können Sie tun:

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(); 
} 

da auch der OnClick Code gleich ist, ist es besser Praxis es nur einmal zu erstellen und sie anschließen, wenn die ViewHolder zu schaffen.

Verwandte Themen