1. 리스트 다이얼로그란?
- 다이얼로그에 리스트뷰를 표시할 수 있는 다이얼로그
- 다이얼로그는 버튼을 총 3개까지 배치할 수 있는데 그 이상이 필요할 경우 리스트 다이얼로그를 사용하면 된다.
2. 기본 다이얼로그
- 리스트 다이얼로그에서 어떤 항목을 클릭하면 그 항목의 데이터가 텍스트뷰에 나오도록하는 예제.
- 리스너 세팅할 때 버튼들에 세팅하면 이게 몇번째 버튼인지/setItems에 세팅하면 이게 몇번째 항목인지가 들어옴.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button8.setOnClickListener { view ->
var builder = AlertDialog.Builder(this)
builder.setTitle("리스트 다이얼로그")
builder.setNegativeButton("취소", null)
//리스너 세팅
//리스트뷰 다이얼로그의 몇번째 항목을 선택했는지가 which에 들어옴
//버튼들에 세팅하면 이게 몇번째 버튼인지/setItems에 세팅하면 이게 몇번째 항목인지가 들어옴.옴
var listner = object:DialogInterface.OnClickListener{
override fun onClick(dialog: DialogInterface?, which: Int) {
textView.text = "기본리스트 다이얼로그 : ${data1[which]}"
}
}
builder.setItems(data1, listner)
builder.show()
}
}
3. 커스텀 리스트 다이얼로그
1. 리스트 항목 하나의 레이아웃을 xml파일로 생성한다.
2. 심플어댑터 쓰려면 항목 한 칸을 구성하기 위한 항목들을 해쉬맵에 담고, 그 해쉬맵을 리스트에 담고 그 리스트를 심플어댑터에 넣어줘야 한다.
3. 리스트 항목을 채울 data들을 만든다
var data2 = arrayOf("슬림쿡", "다이어트", "도시락")
var data3 = intArrayOf(R.drawable.images, R.drawable.images, R.drawable.images)
// 커스텀 리스트 다이얼로그
// xml 파일로 리스트 항목 하나의 구성을 세팅하고 한다. 심플어댑터가 필요하다.
button.setOnClickListener { view ->
var builder = AlertDialog.Builder(this)
builder.setTitle("커스텀 리스트 다이얼로그")
//심플어댑터 쓰려면 항목 한 칸을 구성하기 위한 항목들을 해쉬맵에 담고, 그 해쉬맵을 리스트에 담고 그 리스트를 심플어댑터에 넣어줘야 한다.
var list = ArrayList<HashMap<String, Any>>()
var idx = 0
while(idx < data2.size)
{
var map = HashMap<String, Any>()
map.put("data2", data2[idx])
map.put("data3", data3[idx])
list.add(map)
idx++
}
var keys = arrayOf("data2", "data3")
var ids = intArrayOf(R.id.textview2, R.id.imageview)
var adapter = SimpleAdapter(this, list, R.layout.custom_dialogue, keys, ids)
var listner = object:DialogInterface.OnClickListener{
override fun onClick(dialog: DialogInterface?, which: Int) {
textView.text = "커스텀 다이얼로그 : ${data2[which]}"
}
}
builder.setAdapter(adapter, listner)
builder.setNegativeButton("취소", listner)
builder.show()
}