在Android中自动选择单选按钮

时间:2012-08-07 03:25:28

标签: android listview radio-button

quiz_list.xml:我的xml文件

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

  <TextView
    android:id="@+id/question"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#43bd00"
    android:textSize="20sp"
    android:textStyle="bold"
    android:paddingTop="4dip"
    android:paddingBottom="1dip" />

  <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="Radio Group"
        >
    <RadioButton 
        android:id="@+id/option1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <RadioButton 
        android:id="@+id/option2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <RadioButton
        android:id="@+id/option3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <RadioButton
        android:id="@+id/option4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    </RadioGroup>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="5dp"
    android:gravity="bottom|center_horizontal"
    android:orientation="horizontal" >

<Button
    android:id="@+id/loadPrevious"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:layout_marginTop="10dp"
    android:text="Load Previous"
    android:visibility="invisible" />

<Button
    android:id="@+id/loadNext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:layout_marginTop="10dp"
    android:text="Load Next" />

  </LinearLayout>     

我有一个问题列表,单选按钮有选项。 我面临的问题是 1.当我加载下一个列表时,已经选择了一个按钮。 2.当我加载上一个列表时,选择一个不同的按钮而不是我选择的按钮。

这是我的代码,其中包含json的问题。

String json = "[{\"question\": \"What?\", \"option1\": \"alpha\" , \"option2\": \"beta\" , \"option3\": \"gamma\" , \"option4\": \"alpha\"},{\"question\": \"What is your name ?\", \"option1\": \"Dinesh\" , \"option2\": \"Boopesh\" , \"option3\": \"Srinath\" , \"option4\": \"JK\"},{\"question\": \"What is the capital of India?\", \"option1\": \"Delhi\" , \"option2\": \"Bombay\" , \"option3\": \"Calcutta\" , \"option4\": \"Chennai\"}]";

Gson gson = new Gson();
JsonParser parser = new JsonParser();
    JsonArray array = parser.parse(json).getAsJsonArray();

    for(JsonElement obj : array) {
    Quiz quiz = gson.fromJson(obj,Quiz.class);
    String question = quiz.getQuestion();
    System.out.println("Question: "+question);
    quizList.add(quiz);
    }

我正在使用customadapter添加问题。

如何更改它以使其工作? 有任何想法吗 ???请告诉我......

谢谢西施。

1 个答案:

答案 0 :(得分:0)

试试这个

RadioGroup radioGroup;
RadioButton radioButton1;
RadioButton radioButton2;
RadioButton radioButton3;

boolean hack = false;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
    radioButton1 = (RadioButton) findViewById(R.id.r1);
    radioButton2 = (RadioButton) findViewById(R.id.r2);
    radioButton3 = (RadioButton) findViewById(R.id.r3);

    OnClickListener radioClickListener = new OnClickListener()
    {

        public void onClick(View v)
        {
            if (v.getId() == radioGroup.getCheckedRadioButtonId() && hack)
            {
                radioGroup.clearCheck();
            }
            else
            {
                hack = true;
            }
        }
    };

    OnCheckedChangeListener radioCheckChangeListener = new OnCheckedChangeListener()
    {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            hack = false;
        }
    };

    radioButton1.setOnCheckedChangeListener(radioCheckChangeListener);
    radioButton2.setOnCheckedChangeListener(radioCheckChangeListener);
    radioButton3.setOnCheckedChangeListener(radioCheckChangeListener);

    radioButton1.setOnClickListener(radioClickListener);
    radioButton2.setOnClickListener(radioClickListener);
    radioButton3.setOnClickListener(radioClickListener);

}