Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드 알럿 다이얼로그(AlertDialog)에 목록(List)을 추가하는 방법

이 튜토리얼에서는 안드로이드 앱에서 알럿 다이얼로그(AlertDialog) 안에 선택 가능한 목록을 추가하는 방법을 단계별로 알아봅니다. 목록 항목을 클릭하면 각각 다른 메시지를 표시하도록 구현해 보겠습니다.

1단계: 새 프로젝트 생성

Android Studio를 실행하고 File → New Project 메뉴로 이동한 뒤, 필요한 모든 정보를 입력하여 새 프로젝트를 생성합니다.

2단계: 레이아웃 파일 작성 (res/layout/activity_main.xml)

아래 코드를 activity_main.xml 파일에 추가합니다.

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:gravity = "center"
    android:layout_height = "match_parent">
    <TextView
        android:id = "@+id/click"
        android:layout_width = "wrap_content"
        android:textSize = "30sp"
        android:layout_height = "wrap_content"
        android:text = "Click"/>
</LinearLayout>

위 코드에서는 화면 중앙에 배치된 하나의 TextView를 사용했습니다. 사용자가 이 TextView를 클릭하면 알럿 다이얼로그가 나타나도록 만들 것입니다.

3단계: MainActivity 작성 (src/MainActivity.java)

아래 코드를 MainActivity.java 파일에 추가합니다.

package com.example.myapplication;
import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    TextView text;
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = findViewById(R.id.click);
        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showAlertDialog();
            }
        });
    }
    private void showAlertDialog() {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
        alertDialog.setTitle("AlertDialog");
        String[] items = {"java","android","Data Structures","HTML","CSS"};
        alertDialog.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch(which) {
                    case 0:
                        Toast.makeText(MainActivity.this,"Clicked on java",Toast.LENGTH_LONG).show();
                    break;
                    case 1:
                        Toast.makeText(MainActivity.this,"Clicked on android",Toast.LENGTH_LONG).show();
                    break;
                    case 2:
                        Toast.makeText(MainActivity.this,"Clicked on Data Structures",Toast.LENGTH_LONG).show();
                    break;
                    case 3:
                        Toast.makeText(MainActivity.this,"Clicked on HTML",Toast.LENGTH_LONG).show();
                    break;
                    case 4:
                        Toast.makeText(MainActivity.this,"Clicked on CSS",Toast.LENGTH_LONG).show();
                    break;
                }
            }
        });
        AlertDialog alert = alertDialog.create();
        alert.setCanceledOnTouchOutside(false);
        alert.show();
    }
}

코드 설명:

  • showAlertDialog() 메서드에서 AlertDialog.Builder를 사용해 다이얼로그를 생성합니다.
  • alertDialog.setTitle()로 다이얼로그의 제목을 지정합니다.
  • setItems() 메서드에 문자열 배열을 전달하면 목록 형태의 다이얼로그가 표시됩니다. 여기서는 "java", "android", "Data Structures", "HTML", "CSS" 다섯 개의 항목을 사용했습니다.
  • 사용자가 특정 항목을 클릭하면 onClick() 콜백의 which 매개변수로 해당 항목의 인덱스가 전달되며, switch 문으로 각 항목에 맞는 토스트(Toast) 메시지를 출력합니다.
  • setCanceledOnTouchOutside(false)를 설정하면 다이얼로그 바깥 영역을 터치해도 닫히지 않습니다.

실행 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터와 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Run 아이콘을 클릭하세요. 실행 옵션에서 자신의 모바일 기기를 선택하면, 기기에 아래와 같은 기본 화면이 표시됩니다.

안드로이드 알럿 다이얼로그(AlertDialog)에 목록(List)을 추가하는 방법

이제 화면의 TextView를 클릭하면 목록이 포함된 알럿 다이얼로그가 열립니다.

안드로이드 알럿 다이얼로그(AlertDialog)에 목록(List)을 추가하는 방법

다이얼로그에서 원하는 항목을 선택하면 해당 항목에 맞는 토스트 메시지가 화면 하단에 표시되는 것을 확인할 수 있습니다. 이처럼 setItems() 메서드를 활용하면 간단하게 목록형 알럿 다이얼로그를 구현할 수 있습니다.