안드로이드 : 다이얼로그(Single / MultipleChoice)

안드로이드|2018. 12. 12. 15:32
반응형



clickBtn 메소드는 xml에서 onClick 속성을 이용한 것입니다.



public class MainActivity extends AppCompatActivity {

    String[] items = new String[] {"Apple", "Banana", "Orange", "Grape"};

    boolean[] checked = new boolean[] {true, false, true, false};

    int a = 0;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }


    public void clickBtn(View view) {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        //AlertDialog안에 static 이너 클래스인 Builder를 생성한 것임

        builder.setTitle("다이얼 로그");  //건축가에게 다이얼로그의 모양 설계 의뢰

        builder.setIcon(android.R.drawable.ic_dialog_alert);

        builder.setMessage("다이얼로그 테스트입니다.");

        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, "OK", Toast.LENGTH_SHORT).show();

            }

        });

        builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, "CANCEL", Toast.LENGTH_SHORT).show();

            }

        });

        AlertDialog dialog = builder.create();


        //다이얼로그 밖 터치시 기본 취소되는 걸 안닫히게 하기

        dialog.setCancelable(false);

        dialog.setCanceledOnTouchOutside(false);

        dialog.show();

    }


    public void clickBtn2(View view) {

        //리스트형

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("목록 다이얼로그");

        builder.setItems(items, new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();

            }

        });

        builder.create().show();

    }


    public void clickBtn3(View view) {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Single Choice 다이얼로그");

        builder.setSingleChoiceItems(items, a, new DialogInterface.OnClickListener() {

            @Override                                 //1은 기본 선택 할것의 index 번호

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();

                a = which;

            }

        });

        builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

            }

        });

        builder.create().show();

    }


    public void clickBtn4(View view) {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Multiple choice Item");

        builder.setMultiChoiceItems(items, checked, new DialogInterface.OnMultiChoiceClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which, boolean isChecked) {

                checked[which] = isChecked; //눌러서 바뀌었을때 값이 옴

            }

        });

        builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                String s = "";

                for(int i = 0; i < checked.length; i++) {

                    s += checked[i] + " ";

                }

                Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();

            }

        });

        builder.create().show();

    }

}

반응형