Android Application
Kotlin 고급 위젯 - 뷰 컨테이너(View Container) : 라디오 그룹(RadioGroup)
작성자 임베디드코리아
작성일23-09-24 02:44
조회1,950회
댓글0건
------------------------------------------------------------------------------------
activity_main.xml
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GROUP1"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GROUP2"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<RadioGroup
android:id="@+id/rg1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rb1-1"
android:checked="true"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<RadioButton
android:id="@+id/rb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rb1-2"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<RadioButton
android:id="@+id/rb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rb1-3"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</RadioGroup>
<RadioGroup
android:id="@+id/rg2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rb4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rb2-1"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<RadioButton
android:id="@+id/rb5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rb2-2"
android:checked="true"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<RadioButton
android:id="@+id/rb6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="rb2-3"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</RadioGroup>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="체크 상태 가져오기기1"/>
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="체크 상태 가져오기기2"/>
</LinearLayout>
------------------------------------------------------------------------------------
MainActivity.kt
-------------------------------------------------------------------------------------
class MainActivity : AppCompatActivity() {
private lateinit var btn1: Button
private lateinit var btn2: Button
private lateinit var rg1: RadioGroup
private lateinit var rg2: RadioGroup
private lateinit var rb3: RadioButton
private lateinit var rb6: RadioButton
private lateinit var tv1: TextView
private lateinit var tv2: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn1 = findViewById(R.id.btn1)
btn2 = findViewById(R.id.btn2)
rg1 = findViewById(R.id.rg1)
rg2 = findViewById(R.id.rg2)
rb3 = findViewById(R.id.rb3)
rb6 = findViewById(R.id.rb6)
tv1= findViewById(R.id.tv1)
tv2= findViewById(R.id.tv2)
btn1.setOnClickListener { view ->
when (rg1.checkedRadioButtonId) {
R.id.rb1 -> tv1.text = "Radio 1-1 Checked"
R.id.rb2 -> tv1.text = "Radio 1-2 Checked"
R.id.rb3 -> tv1.text = "Radio 1-3 Checked"
}
when (rg2.checkedRadioButtonId) {
R.id.rb4 -> tv2.text = "Radio 2-1 Checked"
R.id.rb5 -> tv2.text = "Radio 2-2 Checked"
R.id.rb6 -> tv2.text = "Radio 2-3 Checked"
}
}
/*
var listener = RadioListener()
rg1.setOnCheckedChangeListener(listener)
rg2.setOnCheckedChangeListener(listener)
*/
rg1.setOnCheckedChangeListener { radioGroup, i ->
when(i){
R.id.rb1 -> tv1.text = "1-1"
R.id.rb2 -> tv1.text = "1-2"
R.id.rb3 -> tv1.text = "1-3"
}
}
rg2.setOnCheckedChangeListener { radioGroup, i ->
when(i){
R.id.rb4 -> tv2.text = "2-1"
R.id.rb5 -> tv2.text = "2-2"
R.id.rb6 -> tv2.text = "2-3"
}
}
btn2.setOnClickListener { view ->
rb3.isChecked = true
rb6.isChecked = true
}
}
inner class RadioListener : RadioGroup.OnCheckedChangeListener {
override fun onCheckedChanged(p0: RadioGroup?, p1: Int) { // p1 사용자가 선택한 라디오 버튼의 아이디값
when (p0?.id) {
R.id.rg1 ->
when (p1) {
R.id.rb1 -> tv1.text = "1-1"
R.id.rb2 -> tv1.text = "1-2"
R.id.rb3 -> tv1.text = "1-3"
}
R.id.rg2 ->
when (p1) {
R.id.rb4 -> tv2.text = "2-1"
R.id.rb5 -> tv2.text = "2-2"
R.id.rb6 -> tv2.text = "2-3"
}
}
}
}
}