상세 컨텐츠

본문 제목

[안드로이드 코를린] 다이얼로그(Dialog) 체크박스(CheckBox)로 보여주는 방법

안드로이드

by aries574 2022. 7. 6. 11:51

본문


이번 시간에는 다이얼로그(Dialog) 리스트(List)에 체크박스(CheckBox)를 만들어

아이템 다중 선택이 가능하게 만드는 방법에 대하여 알아보겠습니다.


목차

1. 실행 화면
2. 리스트 데이터 만들기 string.xml
3. 메인 화면 구현 activity_main.xml
4. 메인 코드 구현 MainActivity.kt


1. 실행 화면


2. 리스트 데이터 만들기 string.xml

 res -> value -> string.xml

 - 설명 -

다이얼로그(Dialog)에 보일 리스트

    <string-array name="colors">
        <item>Red</item>
        <item>Blue</item>
        <item>Green</item>
    </string-array>

 


3. 메인 화면 구현 activity_main.xml

- 설명 -

 다이얼로그(Dialog) 호출하는 Button

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/dialog_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="다이얼로그"
        android:textSize="25sp"/>
</RelativeLayout>


4. 메인 코드 구현 MainActivity.kt

1. resources.getStringArray(R.array.colors)

  string.xml에 있는 데이터 가져오기

2. AlertDialog.Builder(this)

  다이얼로그 초기화

3. builder.setTitle

  다이얼로그 제목 설정

4. builder.setMultiChoiceItems

  다이얼로그 다중체크 형태 만들기

5. builder.setPositiveButton

  OK이벤트

6. builder.setNegativeButton

  취소 이벤트

class MainActivity : AppCompatActivity() {

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


        //초기화
        val dialogBtn: Button = findViewById(R.id.dialog_btn)

        //버튼 이벤트
        dialogBtn.setOnClickListener {
            showDialog()
        }
    }//onCreate

    private fun showDialog(){

        //선택된 아이템 담는 변수
        val mSelectedItem: ArrayList<String> = arrayListOf()

        //AlertDialog 초기화
        val builder: AlertDialog.Builder = AlertDialog.Builder(this)

        //제목 설정
        builder.setTitle("색깔을 선택하세요")

        //다이얼로그 멀티 선택 이벤트
        builder.setMultiChoiceItems(R.array.colors, null){
            p0, which, isChecked ->

            //데이터 담기
            val colors: Array<String> = resources.getStringArray(R.array.colors)

            //선택된 아이템 담기
            if(isChecked){
                //추가
                mSelectedItem.add(colors[which])
            }else{
                //삭제
                mSelectedItem.remove(colors[which])
            }
        }

        //Ok이벤트
        builder.setPositiveButton("Ok"){
            p0, p1 ->
            var finalSelection = ""

            //선택된 아이템에서 하나씩 꺼내서 item에 담는다.
            for(item: String in mSelectedItem){

                finalSelection = finalSelection + "\n" + item
            }

            Toast.makeText(applicationContext, "선택된 아이템은 ${finalSelection}",
                Toast.LENGTH_SHORT).show()
        }

        //취소 이벤트
        builder.setNegativeButton("Cancel"){
            dialog, p1 -> dialog.cancel()
        }

        val alertDialog: AlertDialog = builder.create()
        alertDialog.show()

    }

}//MainActivity

 

 

 

2022.07.01 - [안드로이드] - [안드로이드 코틀린] DrawerLayout Navigation 만드는 방법 part1 - 화면 만들기

 

[안드로이드 코틀린] DrawerLayout Navigation 만드는 방법 part1 - 화면 만들기

이번에는 옆으로 밀면 숨겨져 있는 메뉴를 보여주는 DrawerLayout 화면 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 테마 설정 4. 툴바 화면 만들기 toolbar_layout.xml

aries574.tistory.com

2022.06.24 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part1 - Room 설정

 

[안드로이드 코틀린] Database Room 사용법 part1 - Room 설정

안드로이드에서 앱 내부에 데이터를 관리하는 기능을 하는 Room 사용법에 대하여 알아보겠습니다. 이번 시간에는 기본 설정을 해보겠습니다. 아래 링크를 들어가시면 Room에 대한 상세한 정보를

aries574.tistory.com

2022.06.20 - [안드로이드] - [안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 갤러리 느낌으로 만드는 방법

 

[안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 갤러리 느낌으로 만드는 방법

이번 시간에는 뷰페이저2(ViewPager2)를 이용해서 이미지를 가로, 세로 방향으로 밀어서 갤러리 느낌으로 보여주는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. dataBinding 설

aries574.tistory.com

반응형

관련글 더보기

댓글 영역