반응형
MultiChoiceListView
- 다수의 항목 리스트를 제공하고 항목 중 다수를 선택할 수 있도록 하는 ListView (그 외 single choice listview 와 유사)
val adapter1 = ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, data1) //simple_list_item_1
binding.list1.adapter = adapter1
binding.list1.choiceMode = ListView.CHOICE_MODE_MULTIPLE
SingleChoiceListView 주요 메서드
- setItemChecked(int, boolean) : 설정한 인덱스에 해당하는 항목이 시작할 때부터 선택되어져 있음 (true로 설정해야 적용) *메소드를 여러번 사용해 여러개 설정 가능
// 체크되어 있는 상태로 시작할 때 (multi choice 의 경우 원하는 만큼 메소드 사용하면 됨)
binding.list1.setItemChecked(2,true) //3번째 항목이 체크 (flase 면 체크 x)
binding.list1.setItemChecked(0,true)
SingleChoiceListView 주요 프로퍼티
- checkedItemPositions : 사용자가 선택한 항목의 인덱스를 파악할 때 사용 (파악 후 필요에 맞게 동작 처리)
- checkedItemPositions 프로퍼티는 SparseBooleanArray 라는 객체를 갖고 있음 -> 이 객체는 true가 설정된 항목과 체크 상태가 변경된 적이 있는 항목의 인덱스 변화 체크 상태 값을 모두 가짐 (과거/현재 변화 있었다? 항목 인덱스 싹 다 가짐)
- SparseBooleanArray 객체는 고유 인덱스 + key 값 + value 값을 따로 가지고 있음
// 사용자 요청시 선택한 항목 불러오기
binding.button2.setOnClickListener {
//binding.textView.text = "${data1[binding.list1.checkedItemPositions]}"
val boolArray = binding.list1.checkedItemPositions
binding.textView.text = ""
//binding.textView.text = "개수 : ${boolArray.size()}"
for (idx in 0 until boolArray.size()) {
//binding.textView.append("${boolArray.keyAt(idx)} ") // 항목의 인덱스 번호(boolArray 객체의 key 값) 가져옴
//현재 체크되어 있는지 t/f 를 체크해 실제 현재 체크되어 있는 항목만 출력
val key = boolArray.keyAt(idx)
if (boolArray[key] == true) {
binding.textView.append("${data1[key]}, ")
}
}
}
* 위 예제에서는 multiChoiceList 항목의 인덱스를 key 값으로, 현재 선택 여부를 value값으로 갖는다. 따라서 반목문을 통해 idx 를 증가시키면서 SparseBooleanArray 객체에 담겨 있는 모든 데이터들을 key 값을 추출하고 해당 키값으로 현재 선택 여부 value값을 추출해 검사
반응형
'Android' 카테고리의 다른 글
[안드로이드/권한] 권한 등록 및 허가 (0) | 2023.03.02 |
---|---|
[안드로이드/AdapterView] RecyclerView (0) | 2023.03.01 |
[안드로이드/AdapterView] SingleChoiceListView (0) | 2023.02.28 |
[안드로이드/AdapterView] MultiAutoCompleteTextView (0) | 2023.02.27 |
[안드로이드/AdapterView] AutoCompleteTextView (0) | 2023.02.27 |