在android中列出多个单选按钮

时间:2013-03-26 05:17:11

标签: android listview gridview radio-button radiobuttonlist

我正在开发一个包含参与不同活动的成员列表的应用程序。

参加一组游戏的一群人。但是一个人只能参加一场比赛。所以我选择了RadioButton。四个游戏即A,B,C和D.人员列表列在一个包含四个RadioButton的列表中,我们需要为每个人选择一个。

enter image description here

我尝试了GridView自定义行数据,如下所示......

<GridView
        android:id="@+id/gridViewMarkList"
        android:layout_width="match_parent"
        android:layout_height="326dp"
        android:numColumns="1" >
</GridView>

我的网格列表是一个单列,在row.xml中包含以下数据

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="500dp"
android:layout_height="fill_parent"
android:padding="10dp" >

<TableRow>

    <TextView
        android:id="@+id/SNo"
        style="@style/text"
        android:layout_width="100dp"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/Name"
        style="@style/text"
        android:layout_width="180dp"
        android:layout_height="wrap_content" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioButton
            android:id="@+id/A"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:checked="true" />

        <RadioButton
            android:id="@+id/B"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/C"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/D"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />
    </RadioGroup>
</TableRow>

现在我无法检索活动中的数据..

给我任何建议来做这个过程..!

2 个答案:

答案 0 :(得分:1)

在这种情况下,您需要一个自定义ListView。 使你的代码如下所示..

<强> row.xml

<?xml version="1.0" encoding="utf-8"?>    
<RelativeLayout>

<TextView
    android:id="@+id/SNo"
    style="@style/text"
    android:layout_width="100dp"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/Name"
    style="@style/text"
    android:layout_width="180dp"
    android:layout_height="wrap_content" />

<RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="160dp"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <RadioButton
        android:id="@+id/A"
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:checked="true" />

    <RadioButton
        android:id="@+id/B"
        android:layout_width="40dp"
        android:layout_height="wrap_content" />

    <RadioButton
        android:id="@+id/C"
        android:layout_width="40dp"
        android:layout_height="wrap_content" />

    <RadioButton
        android:id="@+id/D"
        android:layout_width="40dp"
        android:layout_height="wrap_content" />
</RadioGroup>

<强> CustomListAdapter.java

public class CustomListAdapter extends ArrayAdapter<String> {

private Context mContext = null;
private int id;
private List<String> list = null;

public CustomListAdapter(Context context, int textViewResourceId, List<String> list) {

    super(context, textViewResourceId, patientNameList);
    mContext = context;
    id = textViewResourceId;
    this.list = list;
}

@Override
public View getView(int position, View v, ViewGroup parent) {
    View mView = v;
    if (mView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = inflater.inflate(id, null);
    }


    /* 
        here you go with your views which you gonna display
        ex. : RadioButton gameOption = (RadioButton) mView.findViewById(R.id.gameOptionRadioBtn);
     */


    return mView;
}

}

<强> InYourActivityClass

ArrayAdapter<String> adapter = new CustomListAdapter(this, R.layout.row, list);
listView.setAdapter(adapter);

希望这会有所帮助:)

答案 1 :(得分:0)

在您的RadioGroup中使用它来制作可点击的

  

机器人:可聚焦= “假”

     

机器人:focusableInTouchMode = “假”