У меня есть список из 10 вопросов с несколькими вариантами ответов, и у каждого вопроса есть «RadioGroup».
Но когда я выбираю опцию для вопроса, некоторые опции других вопросов выбираются автоматически.
Пусть
Я выбрал вариант для вопроса - 1.
затем
номера вопросов - 5, 9 выбираются автоматически с той же опцией.
Когда я выбираю вариант для вопроса - 2,
номера вопросов - 6, 10 выбираются автоматически с той же опцией.
Этого не должно быть. Когда я выбираю опцию, должна быть отмечена только эта опция в этой RadioGroup. Пожалуйста, помогите мне исправить это.
Я занимаюсь разработкой мобильного теста. Когда пользователь вводит свое имя пользователя и пароль, сервер аутентифицирует это. Для авторизованных пользователей он возвращает документ с вопросом в виде JSONObject. И каждый экзамен будет иметь exam_id и список из 10 вопросов с множественным выбором, в то время как каждый вопрос имеет один уникальный «id», «question» и четыре варианта «A», «B», «C» и «D», как указано ниже. Объект «questions» - это JSONArray.
{
"exam_id": 0,
"questions": [
{
"A": "A",
"C": "c",
"B": "b",
"D": "d",
"question": "A",
"id": 1,
},
{
"A": "a",
"C": "c",
"B": "B",
"D": "d",
"question": "B",
"id": 2,
},
....
....
]
}
Используя ListAdapter, я пытаюсь присвоить эти значения списку. Вот Активность для этого ...
public class MBTExam extends ListActivity {
JSONObject result;
String exam_id;
JSONArray question_list_json;
ArrayList<String> question_list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
Bundle extras = getIntent().getExtras();
try {
result = new JSONObject(extras.getString("result"));
exam_id = result.getString("exam_id");
question_list_json = result.getJSONArray("questions");
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
for (int i = 1; i <= question_list_json.length() ; i++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = question_list_json.getJSONObject(i-1);
map.put("id", new Integer(i).toString());
map.put("question", e.getString("question"));
map.put("A", e.getString("A"));
map.put("B", e.getString("B"));
map.put("C", e.getString("C"));
map.put("D", e.getString("D"));
mylist.add(map);
}
ListAdapter adapter = new SimpleAdapter(this,
mylist,
R.layout.mbt_test,
new String[] { "id", "question", "A", "B", "C", "D" },
new int[] { R.id.question_no, R.id.question, R.id.A, R.id.B, R.id.C, R.id.D });
setListAdapter(adapter);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
}
}
Вот расположение строк для каждого вопроса
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="top" >
<TextView
android:id="@+id/question_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignWithParentIfMissing="true" />
<TextView
android:id="@+id/white_space"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/question_no"
android:text="@string/white_space" />
<TextView
android:id="@+id/question"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/white_space" />
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/question" >
<RadioButton
android:id="@+id/A"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/B"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/C"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioButton
android:id="@+id/D"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RadioGroup>
</RelativeLayout>
а вот макет для "MBTExam"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top" >
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/android:list">
</ListView>
<Button
android:id="@+id/submit"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Submit"/>
</LinearLayout>
Кроме того, наряду с вопросами, я должен получить кнопку отправки в конце статьи. Пожалуйста, предложите мне необходимые изменения в коде моего макета.
Вот мой полный исходный код
Заранее спасибо.