728x90
단일 선택 Dialog
라디오 버튼 형태를 제공하는 다이얼로그이다.
AlertDialogBuilder의 setSingleChoiceItems 메서드를 통해 구현한다.
AlertDialog에서 ListView를 추출하고 ListView의 checkedItemPosition 프로퍼티를 이용해 선택한 항목의
인덱스 번호를 파악할 수 있다.
다중 선택 Dialog
체크박스 형태를 제공하는 다이얼로그이다
AlertDialogBuilder의 setMultiChoiceItems 메서드를 통해 구현한다.
AlertDialogBuilder에서 ListView를 추출하고 ListView의 checkedItemPositions 프로퍼티를 이용해 현재 선택된 항목들을 파악할 수 있다.
이 때, 선택 상태가 변경된 항목의 인덱스가 추출되므로 이를 이용해 선택 여부를 직접 확인해야 한다.
package com.example.singleselectdialog
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val data1 = arrayOf(
"항목1", "항목2","항목3","항목4","항목5","항목6","항목7","항목8"
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val builder = AlertDialog.Builder(this)
builder.setTitle("Single Choice List")
// 초기 3번 선택
builder.setSingleChoiceItems(data1, 3) { dialogInterface, i ->
val t1 = Toast.makeText(this,data1[i],Toast.LENGTH_SHORT)
t1.show()
}
builder.setNegativeButton("취소",null)
builder.setPositiveButton("확인"){dialogInterface, i ->
val alert = dialogInterface as AlertDialog
val idx = alert.listView.checkedItemPosition
textView.text = "선택된 항목 : ${data1[idx]}"
}
builder.show()
}
button2.setOnClickListener {
val builder = AlertDialog.Builder(this)
val boolArray = booleanArrayOf(true,false,false,true,false,false,false,false)
builder.setMultiChoiceItems(data1,boolArray){ dialogInterface, i, b ->
if (b == true) {
val t1 = Toast.makeText(this, "${data1[i]}가 체크되었습니다", Toast.LENGTH_SHORT)
t1.show()
} else {
val t2 = Toast.makeText(this, "${data1[i]}가 체크 해제되었습니다", Toast.LENGTH_SHORT)
t2.show()
}
}
builder.setNegativeButton("취소",null)
builder.setPositiveButton("확인") { dialogInterface, i ->
val alert = dialogInterface as AlertDialog
textView.text=""
val postions = alert.listView.checkedItemPositions
for (i in 0 until postions.size()) {
// 체크상태가 변경된 항목으ㅟ 인덱스 번호를 추출한다.
val index = postions.keyAt(i)
if (postions.get(index) == true) {
textView.append("${data1[index]}, ")
}
}
}
builder.show()
}
}
}
728x90
'안드로이드 > 메세징' 카테고리의 다른 글
안드로이드 PendingIntent (0) | 2022.06.13 |
---|---|
안드로이드 Notification (0) | 2022.06.13 |
안드로이드 ListDialog (0) | 2022.06.13 |
안드로이드 Dialog (0) | 2022.06.13 |
안드로이드 SnackBar (0) | 2022.06.13 |