안드로이드(Android) 기본 알림창 AlertDialog 에서 선택 목록창과 옵션창 띄우기 |
환경 : Eclipse Mars, Android 4.2.2 |
안드로이드에서 제공하는 기본 알림창인 AlertDialog 로 선택목록 형태와 옵션이 있는 선택목록 형태로 표현할수 있습니다. 이번에는 그 방법에 대해 알아 보겠습니다.
▼ 기본 알림창 AlertDialog 에 목록을 표현하고 싶다면 Builder 클래스에서 setItems() 함수를 사용해야 합니다. 그리고 목록에 들어갈 텍스트는 CharSequence 배열 객체로 만든후 setItems() 첫번째 인수로 넘깁니다. AlertDialog 대화상자에서 선택한 값은 어떻게 알수 있을까요? onClick() 함수의 두번째 인수로 넘어온 id 값은 배열의 요소값입니다. 이 값으로 몇번째 데이터 인지 알수 있는 것이죠.
final CharSequence[] items = { "사과", "딸기", "오렌지", "수박" }; AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( context); // 제목셋팅 alertDialogBuilder.setTitle("선택 목록 대화 상자"); alertDialogBuilder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // 프로그램을 종료한다 Toast.makeText(getApplicationContext(), items[id] + " 선택했습니다.", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); // 다이얼로그 생성 AlertDialog alertDialog = alertDialogBuilder.create(); // 다이얼로그 보여주기 alertDialog.show();
▼ 다음은 목록에 옵션박스 까지 표현하는 것입니다. 옵션박스는 멀티선택이 아닌 하나만 선택하고자 할 때 많이 쓰이죠. 아래 예제는 목록을 선택하자 마자 창이 종료되지만 보통 선택한후 확인버튼을 눌렀을 때 선택한 값을 전달하죠. 옵션박스를 추가하고 싶다면 setSingleChoiceItems() 함수를 사용하시면 됩니다. 첫번째 인수로 목록이 담긴 CharSequence 배열 객체를 넘깁니다.
final CharSequence[] items2 = { "사과", "딸기", "오렌지", "수박" }; AlertDialog.Builder alertDialogBuilder2 = new AlertDialog.Builder( context); // 제목셋팅 alertDialogBuilder2.setTitle("옵션 선택 목록 대화상자"); alertDialogBuilder2.setSingleChoiceItems(items2, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // 프로그램을 종료한다 Toast.makeText(getApplicationContext(), items2[id] + " 선택했습니다.", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); // 다이얼로그 생성 AlertDialog alertDialog2 = alertDialogBuilder2.create(); // 다이얼로그 보여주기 alertDialog2.show();
▼ 아래는 메인 activity 전체 소스입니다. 버튼을 두개 만들어서 각각 클릭했을 때 목록이 있는 알림대화창과 목록과 옵션컨트롤이 동시에 있는 대화창을 실행할 수 있도록 만들었습니다. 화면 레이아웃 XML 은 버튼 두개만 있는 간단한 구조라서 올리지 않았습니다.
import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class AlertDialogListActivity extends Activity implements OnClickListener { final Context context = this; private Button btnAlert, btnOptAlert; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alert_dialog); btnAlert = (Button) findViewById(R.id.btn_alert); btnOptAlert = (Button) findViewById(R.id.btn_optalert); // 클릭 이벤트 btnAlert.setOnClickListener(this); btnOptAlert.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.btn_alert: final CharSequence[] items = { "사과", "딸기", "오렌지", "수박" }; AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( context); // 제목셋팅 alertDialogBuilder.setTitle("선택 목록 대화 상자"); alertDialogBuilder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // 프로그램을 종료한다 Toast.makeText(getApplicationContext(), items[id] + " 선택했습니다.", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); // 다이얼로그 생성 AlertDialog alertDialog = alertDialogBuilder.create(); // 다이얼로그 보여주기 alertDialog.show(); break; case R.id.btn_optalert: final CharSequence[] items2 = { "사과", "딸기", "오렌지", "수박" }; AlertDialog.Builder alertDialogBuilder2 = new AlertDialog.Builder( context); // 제목셋팅 alertDialogBuilder2.setTitle("옵션 선택 목록 대화상자"); alertDialogBuilder2.setSingleChoiceItems(items2, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // 프로그램을 종료한다 Toast.makeText(getApplicationContext(), items2[id] + " 선택했습니다.", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); // 다이얼로그 생성 AlertDialog alertDialog2 = alertDialogBuilder2.create(); // 다이얼로그 보여주기 alertDialog2.show(); break; default: break; } } }
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) 다이얼로그(Dialog) Animation 효과 넣는 방법 (1) | 2019.10.28 |
---|---|
안드로이드(Android) Theme.dialog 로 Activity 화면을 팝업(dialog) 만드는 방법 (0) | 2019.10.27 |
안드로이드(Android) 다이얼로그(Dialog) 키보드 Back key 눌렀을 때 종료하는 방법 (0) | 2019.10.26 |
안드로이드(Android) 기본 알림창인 AlertDialog 에 ListView 표현하는 방법 (3) | 2019.10.26 |
안드로이드(Android) 사용자정의 다이얼로그(Custom Dialog) 만드는 방법 (0) | 2019.10.25 |
안드로이드(Android) 기본 알림창 AlertDialog 띄우는 방법 (0) | 2019.10.24 |
안드로이드 개발 Fragment 화면 구성하는 방법 - FragmentActivity 로 화면 구성 (0) | 2019.10.10 |
로컬 레파지토리 sonatype nexus 설정해서 안드로이드 스튜디오 환경 구성하는 방법 (0) | 2019.10.09 |