Java 如何制作单选项目

Java 如何制作单选项目,java,android,Java,Android,我想制作一个警报对话框,其中包含一个选项列表项,这将帮助用户选择应用程序的主题。我在开发者网站()上读过如何制作多选项,但我不太了解如何制作单选项列表项 提前谢谢 //我的代码 公共类主题对话扩展了DialogFragment{ ArrayList mSelectedItems=new ArrayList();//跟踪所选项目 公共静态主题对话框newInstance(){ 主题对话f=新主题对话(); 返回f; } //单选项目代码 }您需要在ur对话框xml文件中的RadioGroup标记

我想制作一个警报对话框,其中包含一个选项列表项,这将帮助用户选择应用程序的主题。我在开发者网站()上读过如何制作多选项,但我不太了解如何制作单选项列表项 提前谢谢

//我的代码
公共类主题对话扩展了DialogFragment{
ArrayList mSelectedItems=new ArrayList();//跟踪所选项目
公共静态主题对话框newInstance(){
主题对话f=新主题对话();
返回f;
}
//单选项目代码

}
您需要在ur对话框xml文件中的RadioGroup标记内添加单选按钮

自定义对话框.xml

 <RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/RGroup">

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Blue Theme"
                android:id="@+id/bluetheme"/>
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Black Theme"
                android:id="@+id/blacktheme"/>
            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Brown Theme"
                android:id="@+id/browntheme" />                                        

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Orange Theme"
                android:id="@+id/orangetheme"/>


        </RadioGroup>

对话框。设置SingleChoiceItems(cs、position、selectItemListener)将创建单选对话框。

创建xml布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/colorWhite"
android:orientation="vertical">


<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="@color/colorPrimary">

</View>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorWhite"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="please select a theme"
        android:textColor="@color/colorRed"
        android:textSize="18sp" />


    <RadioGroup
        android:id="@+id/cancle_booking_radio_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp">

        <RadioButton
            android:id="@+id/theme1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme1" />

        <RadioButton
            android:id="@+id/theme2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme2" />

        <RadioButton
            android:id="@+id/theme3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme3" />

        <RadioButton
            android:id="@+id/theme4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme4" />

        <RadioButton
            android:id="@+id/theme5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme5" />


    </RadioGroup>

</LinearLayout>

使用最终变量显然不起作用(因为在声明时只能分配一次)。所谓的“全局”变量通常是一种代码味道(特别是当它们成为活动类的一部分时,通常是创建AlertDialogs的地方)。更干净的解决方案是将DialogInterface对象强制转换为AlertDialog,然后调用getListView().GetCheckEditePosition()。像这样:

new AlertDialog.Builder(this)
        .setSingleChoiceItems(items, 0, null)
        .setPositiveButton(R.string.ok_button_label, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                dialog.dismiss();
                int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
                // Do something useful withe the position of the selected radio button
            }
        })
        .show();

要使其更具个性化,请查看此-

抱歉。但是您想添加复选框/单选按钮吗?他们的听众呢?单选按钮@aa_oo@JamesOla检查我的更新
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/colorWhite"
android:orientation="vertical">


<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="@color/colorPrimary">

</View>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorWhite"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="please select a theme"
        android:textColor="@color/colorRed"
        android:textSize="18sp" />


    <RadioGroup
        android:id="@+id/cancle_booking_radio_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp">

        <RadioButton
            android:id="@+id/theme1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme1" />

        <RadioButton
            android:id="@+id/theme2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme2" />

        <RadioButton
            android:id="@+id/theme3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme3" />

        <RadioButton
            android:id="@+id/theme4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme4" />

        <RadioButton
            android:id="@+id/theme5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:buttonTint="@color/colorPrimary"
            android:text="theme5" />


    </RadioGroup>

</LinearLayout>
 final Button btnCancelbooking;
    final TextView tvHideCancelDialog;
    final RadioButton theme1, theme2, theme3, theme4, theme6;
    final Dialog cancelDialog = new Dialog(BookingConfirmClass.this, R.style.DialogSlideAnim);
    //cancelDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);  /*use when not set in style file*/
    cancelDialog.setContentView(R.layout.custom_cancel_booking);
    getWindow().setGravity(Gravity.BOTTOM);
    cancelDialog.show();



   theme1 = (RadioButton) cancelDialog.findViewById(R.id.theme1);
    theme2 = (RadioButton) cancelDialog.findViewById(R.id.theme2);
    theme3 = (RadioButton) cancelDialog.findViewById(R.id.theme3);
    theme4 = (RadioButton) cancelDialog.findViewById(R.id.theme4);
    theme6 = (RadioButton) cancelDialog.findViewById(R.id.theme5);


    final RadioGroup radioGroup = (RadioGroup) cancelDialog.findViewById(R.id.cancle_booking_radio_group);


    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {

            View radioButton = radioGroup.findViewById(checkedId);
            int index = radioGroup.indexOfChild(radioButton);
            switch (index) {
                case 0:
                   //do  your action for theme 1
                    break;
                case 1:
                   //do  your action for theme 2
                    break;
                case 2:
                    //do  your action for theme 3
                    break;
                case 3:
                    //do  your action for theme 4
                    break;
                case 4:
                    //do  your action for theme 5
                    break;
            }
        }
    });
new AlertDialog.Builder(this)
        .setSingleChoiceItems(items, 0, null)
        .setPositiveButton(R.string.ok_button_label, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                dialog.dismiss();
                int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
                // Do something useful withe the position of the selected radio button
            }
        })
        .show();