이번 시간에는 다이얼로그(Dialog) 리스트(List)에 체크박스(CheckBox)를 만들어
아이템 다중 선택이 가능하게 만드는 방법에 대하여 알아보겠습니다.
res -> value -> string.xml
- 설명 -
다이얼로그(Dialog)에 보일 리스트
<string-array name="colors">
<item>Red</item>
<item>Blue</item>
<item>Green</item>
</string-array>
- 설명 -
다이얼로그(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>
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 - 화면 만들기
2022.06.24 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part1 - Room 설정
2022.06.20 - [안드로이드] - [안드로이드 코틀린] 밀어서 화면 변경 ViewPager2 갤러리 느낌으로 만드는 방법
[안드로이드 코틀린] TextToSpeech 텍스트(Text)를 음성으로 전환시켜주는 방법 (0) | 2022.07.08 |
---|---|
[안드로이드 코틀린] 다이얼로그(Dialog) 사용자정의 (Custom) 화면으로 보여주는 방법 (0) | 2022.07.07 |
[안드로이드 코틀린] 다이얼로그(Dialog) 리스트(List)로 보여주는 방법 (0) | 2022.07.05 |
[안드로이드 코틀린] DrawerLayout Navigaion 만드는 방법 part4 - 네비게이션 호출 메뉴 버튼 만들기 (0) | 2022.07.04 |
[안드로이드 코틀린] DrawerLayout Navigaion 만드는 방법 part3 - 헤더 화면 만들기 (0) | 2022.07.03 |
댓글 영역