Android Dialog

AlertDialog的Radio列表样式

  AlertDialog的Radio列表样式在AlterDialogListItem基础上有一个样式。基本的操作一样,只不过要注意使用两个OnClickListener事件,一个OnClickListener事件提供给选项,一个OnClickListener事件提供给按钮

案例

R.array.hobby字符串资源文件


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="hobby">
        <item>吃饭</item>
        <item>上网</item>
        <item>睡觉</item>
        <item>LOL</item>
    </string-array>
</resources>

java文件


public class MainActivity extends AppCompatActivity {
    TextView t1;
    String[] hobbys;
    AlertDialog alertDialog;
    //Dialog按钮事件
    DialogInterface.OnClickListener onClickListenerPositive;
    //当前的选项下标记录
    int choiceItemIndex = -1;
    //Dialog单选项事件
    DialogInterface.OnClickListener onClickListenerSingleChoiceItems;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        hobbys = getResources().getStringArray(R.array.hobby);

        t1 = (TextView) findViewById(R.id.t1);

        onClickListenerSingleChoiceItems = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                choiceItemIndex = which;

            }
        };

        onClickListenerPositive = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                if (which == AlertDialog.BUTTON_POSITIVE) {
                    //修改t1的值
                    t1.setText(hobbys[choiceItemIndex]);
                }


            }
        };
    }




    public void btn2(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("选择你的爱好");
        //Radio样式的单选项内容
        //参数1:items 字符串数组
        //参数2:checkedItem 默认选择项下标
        //参数3:listener 选项事件
        builder.setSingleChoiceItems(hobbys, 0, onClickListenerSingleChoiceItems);
        //Dialog按钮
        builder.setPositiveButton("确定", onClickListenerPositive);
        alertDialog = builder.create();
        alertDialog.show();
    }


}