본문 바로가기
[ Developer ]/Android

[Android] 안드로이드 Alert Dialog에서 선택창 주기

by 김현섭. 2016. 7. 13.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Android 알림창에 항목 선택창 띄우기

@ 체크박스
알림창에 선택창 즉 체크 박스나 라디오 버튼을 줄 수 있다


위와 같은 로직을 이용하면 버튼에서 사용자에게 선택을 할 수 있는 창을 만들 수 있다
체크 박스는 사용자에게 여러 개를 선택할 수 있는 기능이다



@ 라디오 버튼

라디오 버튼을 구성하는 로직은 다음과 같다


결과는 다음과 같다


라디오 버튼은 여러 값 중에 한 가지의 값만을 선택이 가능하다


@ 체크박스 실습
프로젝트를 우선 하나 생성한다 My Dialog 그런 후 activity_main.xml에서 기존에 있는 TextView를 Button으로 바꿔준다


버튼이 추가되었으면 이제 MainActivity에 가서 로직을 추가해주자


관심 분야를 선택하는 창을 만들기로 작성을 했다 final로 선언을 해서 dialog안에서 사용을 한다
boolean 값을 true로 주면 선택된 채로 나오게 된다
또한 관심 분야를 보여주기 위해서 확인 창을 눌렀을 때 걸러주는 로직을 넣어준다


결과는 다음과 같다


선택을 하고 확인창을 누르면 Toast로 결과가 나온다



*MainActivity - 알림창에 CheckBox주기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class MainActivity extends AppCompatActivity {
 
    private Button btnDialog;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        btnDialog = (Button) findViewById(R.id.btnDialog);
        final List<String> selectedItems = new ArrayList<String>();
 
        btnDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                final String[] items = new String[]{"IT/Computer""Game""Fashion""VR""Kidult""Sports""Music""Movie"};
 
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                dialog  .setTitle("관심분야를 선택하세요")
                        .setMultiChoiceItems( items
                                            , new boolean[]{falsefalsefalsefalsefalsefalsefalsefalse}
                                            , new DialogInterface.OnMultiChoiceClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                        if (isChecked) {
                                            Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();
                                            selectedItems.add(items[which]);
                                        }
                                        else {
                                            selectedItems.remove(items[which]);
                                        }
                                    }
                                })
                        .setPositiveButton("확인"new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                if ( selectedItems.size() == 0 ) {
                                    Toast.makeText(MainActivity.this"선택된 관심분야가 없습니다", Toast.LENGTH_SHORT).show();
                                }
                                else {
                                    
                                    String items = "";
                                    for (String seletecItem : selectedItems) {
                                        items += (seletecItem + ", ");
                                    }
 
                                    selectedItems.clear();
 
                                    items = items.substring(0, items.length()-2);
                                    Toast.makeText(MainActivity.this, items, Toast.LENGTH_SHORT).show();
                                    
                                }
                            }
                        }).create().show();
            }
        });
    }




@ 라디오 버튼 실습
우선 이전에 실습했던 체크 박스 버튼을 그대로 복사해서 id만 다르게 해서 추가를 해준다


그런 후 Main에서도 체크박스의 형태를 그대로 가져와서 사용한다
setMultiChoiceItem이였던 것을 Single로 바꾸고 안 쪽에 DialogInterface도 변경을 해준다


위와 같이 변경을 해주면 된다

결과는 다음과 같다



*Source - 알림창에 라디오 버튼 주기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
btnDialog2 = (Button) findViewById(R.id.btnDialog2);
 
        btnDialog2.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
 
                final String[] items = new String[]{"IT/Computer""Game""Fashion""VR""Kidult""Sports""Music""Movie"};
                final int[] selectedIndex = {0};
 
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                dialog.setTitle("관심분야를 선택하세요.")
                        .setSingleChoiceItems(items,
                                0,
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        selectedIndex[0= which;
                                    }
                                })
                        .setPositiveButton("확인"new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, items[selectedIndex[0]], Toast.LENGTH_SHORT).show();
                            }
                        }).create().show();
 
            }
        });