[안드로이드] AlertDialog 생성하기
- 프로그래밍 정보
- 2010. 9. 8.
반응형
읽기전에 손가락 한번 클릭~ >_<
고마워요 ~ Chu ~ ♥
안드로이드의 다이얼로그에 대한 내용입니다.
AlertDialog 생성하기
AlertDialog 는 다이얼로그 클래스를 상속받은 클래스입니다.
AlertDialog 는
▣ 타이틀
▣ 텍스트 내용
▣ 1개 ~ 3개의 버튼
▣ 선택 가능한 목록들
을 사용하기에 좋겠습니다.▣ 텍스트 내용
▣ 1개 ~ 3개의 버튼
▣ 선택 가능한 목록들
AlertDialog 를 생성하려면 우선 AlertDialog.Builder 클래스를 사용하여 생성자인 AlertDialog.Builder(Context) 를 써서 Builder 를 얻어야 합니다.
그런 뒤 AlertDialog 의 public 메소드들을 필요에 따라 정의 후 , create() 메소드로 AlertDialog 객체를 얻어와야 합니다.
타이틀과 버튼 추가하기
타이틀을 추가하기 위해 setMessage() 메소드를 사용하고, 다이얼로그 취소여부는 setCancelable(boolean) 이라는 메소드로 지정해야 합니다.
setCancelable() 메소드의 값이 false 면 "BACK" 버튼 등으로 다이얼로그를 취소할 수 없게 됩니다.
버튼으로는 다이얼로그에 총 3가지의 버튼만을 지원합니다.
▣ 긍정버튼 ( setPositiveButton() )
▣ 중립버튼 ( setNeutralButton() )
▣ 부정버튼 ( setNegativeButton() )
▣ 중립버튼 ( setNeutralButton() )
▣ 부정버튼 ( setNegativeButton() )
각각의 버튼에 대한 이벤트는 DialogInterface.OnClickListener 로 처리하면 됩니다.
이 리스너 안에는 onClick() 메소드 하나만 정의되어 있네요
리스트 목록 추가하기
다이얼로그의 리스트 목록 입니다.
리스트 추가는 setItems() 메소드를 이용하는데요,
마찬가지로 타이틀을 추가하고, 표시할 아이템의 배열과 아이템 선택시에 이벤트 처리를 위한 리스너
(DialogInterface.OnClickListener) 를 setItems() 메소드의 파라미터로 전달합니다.
체크박스, 라디오버튼 추가하기
2010/08/08 - [안드로이드] - [안드로이드] 컴포넌트 #1 - 액티비티(Activity)
다이얼로그 리스트에 체크박스 아이템의 추가는 setMultiChoiceItems() 메소드로, 라디오버튼은 setSingleChoiceItems() 메소드로 추가합니다.
두 메소드는 레퍼런스에 보니 다양한 오버라이드 된 버전이 존재하네요,
public AlertDialog.Builder setMultiChoiceItems (Cursor cursor, String isCheckedColumn, String labelColumn, DialogInterface.OnMultiChoiceClickListener listener)
public AlertDialog.Builder setMultiChoiceItems (int itemsId, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
public AlertDialog.Builder setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (int itemsId, int checkedItem, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (Cursor cursor, int checkedItem, String labelColumn, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setMultiChoiceItems (int itemsId, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
public AlertDialog.Builder setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (int itemsId, int checkedItem, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener)
public AlertDialog.Builder setSingleChoiceItems (Cursor cursor, int checkedItem, String labelColumn, DialogInterface.OnClickListener listener)
선택된 아이템 값들은 다이얼로그 자체가 액티비티에 존재하는 특성상 액티비티가 종료되기 전에는 이전 값들을 기억하고 있습니다.
액티비티가 종료되면 선택 아이템에 대한 정보도 사라지겠지만요.
따라서, 선택정보를 유지하려면 액티비티 생명주기 메소드에서 적절하게 저장하고 복구되어야 하겠습니다. 영구적으로 저장하기 위해선 DB를 이용하는것도 좋겠네요.
구현은 별것 없습니다. 일반 리스트 목록 다이얼로그와 비슷하고 단지 setItems() 메소드 대신에 setMultiChoiceItems() 나 setSingleChoiceItems() 메소드를 사용하는것 정도겠네요. 이 메소드의 두번째 인자는 체크된 아이템의 정수값. 즉, 0이면 첫번째 아이템이 기본 선택되어진 상태로 나타남을 의미합니다.
1이면 두번째..... 2면 세번째......
존재할 수 없는 아이템 값인 '-1' 을 지정해버리면 아무것도 선택되어지지 않은 상태가 됩니다.
다음 포스팅에선 ProgressDialog 를 알아보겟습니다. ㅎ
관련글
반응형