안드로이드/AdapterView
안드로이드 MultiChoiceListView
김어찐
2022. 6. 7. 18:18
728x90
다수의 항목을 제공하고 항목 중 다수를 선택할 수 있는 ListView 이다.
ListView의 Mode를 변경하여 설정한다.
Mode 설정
구현 방법은 ListView와 동일하며 ListView를 MultiChoice로 설정해준다.
list1.choiceMode = ListView.CHOICE_MODE_MULTIPLE
코드처리
사용자가 선택한 항목이 무엇인지 파악해야 할 때 ListView의 checkedItemPositions 프로퍼티를 활용한다.
이 프로퍼티는 SparseBooleanArray라는 클래스의 객체가 담겨져 있는데 이 객체에는 true가 설정된 항목과 체크 상태가 변경된적이 있는 항목의 인덱스 번화 체크 상태 값을 가지고 있다.
package com.example.multichoicelistview
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
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)
val adapter1 = ArrayAdapter(this,android.R.layout.simple_list_item_multiple_choice,data1)
list1.adapter = adapter1
list1.choiceMode=ListView.CHOICE_MODE_MULTIPLE
list1.setItemChecked(0,true)
list1.setItemChecked(2,true)
list1.setItemChecked(5,true)
button.setOnClickListener {
textView.text=""
//현재 채크 상태에 관련된 객체를 가져온다.
val boolArray = list1.checkedItemPositions
// textView.text="개수 : ${boolArray.size()}"
for (idx in 0 until boolArray.size()) {
// textView.append("${boolArray.keyAt(idx)}")
//항목의 인덱스 번호
val key = boolArray.keyAt(idx)
// 해당 항목이 체크되어 있는 확인한다.
if (boolArray[key] == true) {
textView.append("${data1[key]},")
}
}
}
}
}
728x90