public class AdapterTest extends ArrayAdapter {
private int resourceId;
List<Test> listTest = new ArrayList<Test>();
private ViewHolder viewHolder;
public AdapterTest(Context context, int resource,
List objects) {
super(context, resource, objects);
resourceId = resource;
listTest = objects;
}
@Override
public View getView(final int position, View
convertView,
ViewGroup parent) {
viewHolder = new ViewHolder();
View view = LayoutInflater.from(getContext
()).inflate(resourceId,
null);
viewHolder.tvTitle = (TextView) view
.findViewById
(R.id.tv_test_title);
viewHolder.rdoG = (RadioGroup)
view.findViewById(R.id.rdog_test);
viewHolder.radA = (RadioButton)
view.findViewById(R.id.rdo_test_a);
viewHolder.radB = (RadioButton)
view.findViewById(R.id.rdo_test_b);
viewHolder.radC = (RadioButton)
view.findViewById(R.id.rdo_test_c);
viewHolder.radD = (RadioButton)
view.findViewById(R.id.rdo_test_d);
viewHolder.tvAnswer = (TextView) view
.findViewById
(R.id.tv_test_answer);
viewHolder.tvTitle.setText(String.valueOf
(position + 1) + "、"
+ listTest.get
(position).getTitle());
viewHolder.radA.setText("A、"
+ listTest.get
(position).getQuestionA());
viewHolder.radB.setText("B、"
+ listTest.get
(position).getQuestionB());
viewHolder.radC.setText("C、"
+ listTest.get
(position).getQuestionC());
viewHolder.radD.setText("D、"
+ listTest.get
(position).getQuestionD());
viewHolder.tvAnswer.setText("答案:"
+ listTest.get
(position).getAnswer());
// viewHolder.rdoG.setTag(position);
if (listTest.get(position).getChecked
().equals("A")
|| listTest.get
(position).getChecked().equals("B")
|| listTest.get
(position).getChecked().equals("C")
|| listTest.get
(position).getChecked().equals("D")) {
if (listTest.get(position).getChecked
().equals("A")) {
viewHolder.radA.setChecked
(true);
if (listTest.get
(position).getAnswer()
.equals
(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
}
if (listTest.get(position).getChecked
().equals("B")) {
viewHolder.radB.setChecked
(true);
if (listTest.get
(position).getAnswer()
.equals
(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
}
if (listTest.get(position).getChecked
().equals("C")) {
viewHolder.radC.setChecked
(true);
if (listTest.get
(position).getAnswer()
.equals
(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
}
if (listTest.get(position).getChecked
().equals("D")) {
viewHolder.radD.setChecked
(true);
if (listTest.get
(position).getAnswer()
.equals
(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
}
viewHolder.radA.setEnabled(false);
viewHolder.radB.setEnabled(false);
viewHolder.radC.setEnabled(false);
viewHolder.radD.setEnabled(false);
} else {
viewHolder.rdoG.clearCheck();
viewHolder.tvAnswer.setVisibility
(View.GONE);
}
viewHolder.rdoG.setOnCheckedChangeListener(new
OnCheckedChangeListener() {
@Override
public void onCheckedChanged
(RadioGroup arg0, int arg1) {
if(viewHolder.rdoG == arg0){
switch (arg1) {
case R.id.rdo_test_a:
listTest.get
(position).setChecked("A");
if
(listTest.get(position).getAnswer()
.equals(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
viewHolder.radA.setEnabled(false);
viewHolder.radB.setEnabled(false);
viewHolder.radC.setEnabled(false);
viewHolder.radD.setEnabled(false);
break;
case R.id.rdo_test_b:
listTest.get
(position).setChecked("B");
if
(listTest.get(position).getAnswer()
.equals(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
viewHolder.radA.setEnabled(false);
viewHolder.radB.setEnabled(false);
viewHolder.radC.setEnabled(false);
viewHolder.radD.setEnabled(false);
break;
case R.id.rdo_test_c:
listTest.get
(position).setChecked("C");
if
(listTest.get(position).getAnswer()
.equals(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
viewHolder.radA.setEnabled(false);
viewHolder.radB.setEnabled(false);
viewHolder.radC.setEnabled(false);
viewHolder.radD.setEnabled(false);
break;
case R.id.rdo_test_d:
listTest.get
(position).setChecked("D");
if
(listTest.get(position).getAnswer()
.equals(listTest.get(position).getChecked()))
viewHolder.tvAnswer.setTextColor(0xff008000);
else
viewHolder.tvAnswer.setTextColor(0xffdc143c);
viewHolder.tvAnswer.setVisibility(View.VISIBLE);
viewHolder.radA.setEnabled(false);
viewHolder.radB.setEnabled(false);
viewHolder.radC.setEnabled(false);
viewHolder.radD.setEnabled(false);
break;
default:
break;
}
}
}
});
return view;
}
class ViewHolder {
TextView tvTitle;
RadioGroup rdoG;
RadioButton radA;
RadioButton radB;
RadioButton radC;
RadioButton radD;
TextView tvAnswer;
}
}
}