я делаю динамический c список радиокнопок внутри каждой строки в представлении реселлера, но когда я случайным образом прокручиваю все радиокнопки, не отмеченные, я использую модель для сохранения состояния радиокнопки, notifyItemChanged, инициализирую первый чек, используя макет вместо радиогруппы, и использую условие выбора для установите флажок spesifi c, но я не могу решить эту проблему
после первого снимка все переключатели отмечены
, но при прокрутке вниз и назад все радиокнопки не проверяются
это макет моего элемента в обзоре переработчика
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayoutlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="2">
<LinearLayout
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/questionText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Sumber Data" />
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:orientation="vertical">
<CheckBox
android:id="@+id/tidak_ada"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Tidak Ada" />
</LinearLayout>
</TableRow>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">
<RadioGroup
android:id="@+id/radiogroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"></LinearLayout>
</LinearLayout>
</LinearLayout>
мой код для создания радиокнопки внутри адаптера в onBindViewHolder
var rprms = InputFieldHolder.radiogroup?.layoutParams
if(rprms != null && question.pilihan_jawabans.count() > 0){
InputFieldHolder.radiogroup?.removeAllViews()
question.pilihan_jawabans.forEachIndexed {i,e->
val rdbtn = RadioButton(context)
rdbtn.id = question.pilihan_jawabans[i].id
rdbtn.text = question.pilihan_jawabans[i].isi.toString()
rprms = RadioGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
InputFieldHolder.radiogroup?.addView(rdbtn, rprms)
val size = InputFieldHolder.radiogroup?.childCount?.minus(1)
if(question.pilihan_jawabans[i].checked){
for (x in 0..size!!) {
if((InputFieldHolder.radiogroup?.getChildAt(x) is RadioButton)){
if((InputFieldHolder.radiogroup?.getChildAt(x) as RadioButton).id != question.pilihan_jawabans[i].id){
(InputFieldHolder.radiogroup?.getChildAt(x) as RadioButton).setChecked(false)
}
}
}
}
rdbtn.setChecked(question.pilihan_jawabans[i].checked)
rdbtn.setTag(Integer(question.pilihan_jawabans[i].id))
rdbtn.setOnCheckedChangeListener({ group, checked ->
question.pilihan_jawabans.forEachIndexed {ii,ee->
if(checked){
question.pilihan_jawabans[ii].checked = false
}
}
question.pilihan_jawabans[i].checked = checked
notifyItemChanged(position)
})
}
}
моя модель для хранения проверенного радиокнопки состояния
@Parcelize
class QuestionSelection(
var id : Int,
var isi : String,
var keterangan : String,
var checked : Boolean = false
) : Parcelable
ПРИМЕЧАНИЕ: моя радио-кнопка - динамическая c, поэтому не просто 2 варианта, а больше, в зависимости от данных, которые я взял из API