我正在Android设备上写一个测验应用程序,其中有一些问题。每个问题都有一个无线电组,通过单选按钮至少有4个答案选项。
作为测验活动的测验页面,我使用了列表视图。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_question_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="ir.testravanshenasi.segalclinic.test.QuestionListActivity"
tools:showIn="@layout/activity_question_list">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">
<TextView
android:text="test questions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView13"
android:layout_marginBottom="10dp"
android:textAlignment="center"
android:textSize="18sp" />
<View
android:layout_width="match_parent"
android:layout_height="3dp"
android:background="@android:color/darker_gray"
android:layout_alignParentTop="true" />
<ListView
android:layout_width="match_parent"
android:id="@+id/activity_question_list_list"
android:layout_height="430dp">
</ListView>
<View
android:layout_width="match_parent"
android:layout_height="3dp"
android:background="@android:color/darker_gray"
android:layout_alignParentTop="true" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<Button
android:text="cancel"
android:layout_width="wrap_content"
android:id="@+id/activity_question_list_cancel"
android:layout_weight="1"
android:textSize="18sp"
android:layout_height="40dp"
android:onClick="onCancelBtnClick" />
<Button
android:text="end"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:id="@+id/activity_question_list_complete"
android:layout_weight="1"
android:textSize="18sp"
android:background="@android:color/holo_green_dark"
android:onClick="onCompleteBtnClick" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
我为每个问题行做了一个布局。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp">
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/question_id"
android:visibility="gone" />
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/question_text" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/question_options">
<RadioButton
android:text="RadioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_option_1"
android:layout_weight="1" />
<RadioButton
android:text="RadioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_option_2"
android:layout_weight="1" />
<RadioButton
android:text="RadioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_option_3"
android:layout_weight="1" />
<RadioButton
android:text="RadioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_option_4"
android:layout_weight="1" />
<RadioButton
android:text="RadioButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/question_option_5"
android:layout_weight="1"
android:visibility="gone" />
</RadioGroup>
</LinearLayout>
我将问题添加为SimpleAdapter列表视图。
String[] from = {"qid" , "question" , "op1","op2" , "op3" , "op4"};
int[] to = { R.id.question_id , R.id.question_text , R.id.question_option_1 ,R.id.question_option_2 , R.id.question_option_3 , R.id.question_option_4 };
questionsList = parse(jsonArray);
SimpleAdapter rlt = new SimpleAdapter(
getBaseContext() , questionsList , R.layout.question ,from , to );
lv.setAdapter(rlt);
问题在于,当我选择(例如)问题中的第一个答案选项时,在其他一些问题中也会选择第一个答案。
我在Genymotion测试我的应用程序。
谢谢。答案 0 :(得分:0)
我解决了这个问题,这是我的解决方案:
我做了一个进入SimpelAdapter的课程并在这里使用它。我有一个存储问题ID和选择的单选按钮编号的列表。当选择一个单选按钮时,我将其编号存储在列表中,并且在列表的每个周期中i测试列表中是否存在radiobuttons编号?然后我选择用于检查或清除单选按钮检查的无线电组方法。
public class row_question_list extends SimpleAdapter {
List<HashMap<String , Object>> questionsList;
public row_question_list(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
questionsList = (List<HashMap<String , Object>>) data;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
RadioButton op1 = (RadioButton) v.findViewById(R.id.question_option_1);
RadioButton op2 = (RadioButton) v.findViewById(R.id.question_option_2);
RadioButton op3 = (RadioButton) v.findViewById(R.id.question_option_3);
RadioButton op4 = (RadioButton) v.findViewById(R.id.question_option_4);
RadioButton op5 = (RadioButton) v.findViewById(R.id.question_option_5);
final RadioGroup rg = (RadioGroup) v.findViewById(R.id.question_options);
op1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
questionsList.get(position).put("answer","1");
notifyDataSetChanged();
}
});
op2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
questionsList.get(position).put("answer","2");
notifyDataSetChanged();
}
});
op3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
questionsList.get(position).put("answer","3");
notifyDataSetChanged();
}
});
op4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
questionsList.get(position).put("answer","4");
notifyDataSetChanged();
}
});
op5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
questionsList.get(position).put("answer","5");
notifyDataSetChanged();
}
});
if(questionsList.get(position).get("answer").toString().matches("0")){
rg.clearCheck();
rg.refreshDrawableState();
} else if(questionsList.get(position).get("answer").toString().matches("1")){
rg.check(R.id.question_option_1);
rg.refreshDrawableState();
}else if(questionsList.get(position).get("answer").toString().matches("2")){
rg.check(R.id.question_option_2);
rg.refreshDrawableState();
}else if(questionsList.get(position).get("answer").toString().matches("3")){
rg.check(R.id.question_option_3);
rg.refreshDrawableState();
}else if(questionsList.get(position).get("answer").toString().matches("4")){
rg.check(R.id.question_option_4);
rg.refreshDrawableState();
}else if(questionsList.get(position).get("answer").toString().matches("5")){
rg.check(R.id.question_option_5);
rg.refreshDrawableState();
}
return v;
}
}
我在制作列表项时使用了这个类:
String[] from = {"question" , "op1","op2" , "op3" , "op4"};
int[] to = { R.id.question_text , R.id.question_option_1 ,R.id.question_option_2 , R.id.question_option_3 , R.id.question_option_4 };
questionsList = parse(jsonArray);
row_question_list rql = new row_question_list(
getBaseContext() , questionsList , R.layout.question , from , to
);
lv.setAdapter(rql);