Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

안드로이드(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;
		}
	}
}

 

 

반응형
Posted by 녹두장군1
,