본문 바로가기
안드로이드 코틀린

[Kotlin][Android]항목 선택 다이얼로그 만들기

by teamnova 2024. 10. 12.
728x90

오늘은 배열과 AlertDialog.Builder를 활용해 코틀린 언어로 항목 선택 다이얼로그를 만들어 보겠습니다.

 

 

레이아웃 xml 파일 코드(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:padding="16dp">

    <TextView
        android:id="@+id/itemTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:text="선택한 항목이 여기에 표시됩니다." />

    <Button
        android:id="@+id/showDialogButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="목록 보기" />
</LinearLayout>

 

 

 

 

 

 

액티비티 코틀린 코드

class MainActivity : AppCompatActivity() {

    private lateinit var itemTextView: TextView // 선택한 항목을 표시할 텍스트뷰
    private lateinit var showDialogButton: Button // 다이얼로그 띄우기 버튼
    private lateinit var listDialog: AlertDialog // 목록을 보여줄 다이얼로그
    private val strArray = arrayOf("연어", "고등어", "참치", "갈치", "광어", "우럭", "복어", "농어", "도미", "전갱이", "가자미", "메기", "장어", "돌고래", "상어")
    // 다이얼로그의 목록에 보여줄 항목 데이터

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        itemTextView = findViewById(R.id.itemTextView)
        showDialogButton = findViewById(R.id.showDialogButton)

        // 버튼을 누를 시 다이얼로그가 보이도록 설정
        showDialogButton.setOnClickListener {
            showListDialog()
        }

        // 다이얼로그를 생성
        createListDialog()
    }

    private fun createListDialog() { // 다이얼로그를 생성하는 메서드
        // 다이얼로그 빌더 생성
        val builder = AlertDialog.Builder(this)

        // 빌더에 보여줄 목록 정보와 항목을 눌렀을 시 처리할 이벤트 설정
        builder.setItems(strArray) { dialogInterface, i ->
            // 항목을 눌렀을 시 텍스트뷰에 해당 항목 표시
            itemTextView.text = strArray[i]
        }

        // 빌더에 목록 선택 안 하고 닫기 위한 버튼 추가
        builder.setNegativeButton("닫기") { dialog, _ ->
            dialog.dismiss()
        }

        // 빌더에 설정한 정보대로 다이얼로그 생성
        listDialog = builder.create()
    }

    private fun showListDialog() { // 다이얼로그를 보여주는 메서드
        listDialog.show()
    }
}

 

 

 

 

 

 

실행 영상


다이얼로그 그리고 선택한 항목이 화면에 보이는 것을 확인할 수 있습니다.