kotlin:Radio按钮单选控件
kotlin:Radio button single check control
我有一个简单的应用程序,它以 RecyclerView 片段开始,每一行都有 RadioButton,但问题是我不能只检查一个单选按钮我需要它,如果我在一个旧的取消选中自动
这是我的适配器
class StoresAdapter constructor(private val activety: MainActivity, private var listOfData: ArrayList<StoresModeling>,
val listener: ContentListener) : RecyclerView.Adapter<StoresAdapter.ViewHolder>() {
override fun getItemCount(): Int = listOfData.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
//var inf = ViewHolder(LayoutInflater.from(parent!!.context).inflate(R.layout.min_mark_modling, parent, false))
return ViewHolder(LayoutInflater.from(parent!!.context).inflate(R.layout.stores_tick, parent, false),getItemViewType(transition_position))
}
var selectedPosition:Int = 0
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(listOfData[position], listener, listOfData)
}
inner class ViewHolder(itemView: View?,position: Int) : RecyclerView.ViewHolder(itemView) {
fun bind(Data: StoresModeling, listener: ContentListener, listOfData: ArrayList<StoresModeling>) {
val dataListin2 = listOfData[adapterPosition]
var titlein = dataListin2.title
var cityin = dataListin2.city
var codein = dataListin2.code
itemView.title.text = titlein
itemView.city.text = cityin
itemView.code.text = codein
/////// my radioButton /////
itemView.RB
}
}
interface ContentListener {
fun onItemClicked(Data: StoresModeling) {
}
}
很简单。
步骤 1. 使用 CheckBox
而不是 RadioButton
因为它们不能像文档中所说的那样取消选中
However, contrary to a CheckBox, a radio button cannot be unchecked by the user once checked.
步骤 2. 在您的 class StoresModeling
上创建 属性 var isChecked: Boolean = false
步骤 3.擦除你的所有正文ViewHolder
(你用错了),只写它
class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView)
并在 onBindViewHolder
中填充 StoresModeling
第 4 步。 更改 isChecked
的状态(在您的 onBindViewHolder
内),取消选中所有其他状态并通过以下代码通知您的适配器:
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
data.isChecked = true
listOfData.forEach {
if (!it.equals(data)) it.isChecked = false
}
notifyDataSetChanged()
}
}
我有一个简单的应用程序,它以 RecyclerView 片段开始,每一行都有 RadioButton,但问题是我不能只检查一个单选按钮我需要它,如果我在一个旧的取消选中自动 这是我的适配器
class StoresAdapter constructor(private val activety: MainActivity, private var listOfData: ArrayList<StoresModeling>,
val listener: ContentListener) : RecyclerView.Adapter<StoresAdapter.ViewHolder>() {
override fun getItemCount(): Int = listOfData.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
//var inf = ViewHolder(LayoutInflater.from(parent!!.context).inflate(R.layout.min_mark_modling, parent, false))
return ViewHolder(LayoutInflater.from(parent!!.context).inflate(R.layout.stores_tick, parent, false),getItemViewType(transition_position))
}
var selectedPosition:Int = 0
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(listOfData[position], listener, listOfData)
}
inner class ViewHolder(itemView: View?,position: Int) : RecyclerView.ViewHolder(itemView) {
fun bind(Data: StoresModeling, listener: ContentListener, listOfData: ArrayList<StoresModeling>) {
val dataListin2 = listOfData[adapterPosition]
var titlein = dataListin2.title
var cityin = dataListin2.city
var codein = dataListin2.code
itemView.title.text = titlein
itemView.city.text = cityin
itemView.code.text = codein
/////// my radioButton /////
itemView.RB
}
}
interface ContentListener {
fun onItemClicked(Data: StoresModeling) {
}
}
很简单。
步骤 1. 使用 CheckBox
而不是 RadioButton
因为它们不能像文档中所说的那样取消选中
However, contrary to a CheckBox, a radio button cannot be unchecked by the user once checked.
步骤 2. 在您的 class StoresModeling
var isChecked: Boolean = false
步骤 3.擦除你的所有正文ViewHolder
(你用错了),只写它
class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView)
并在 onBindViewHolder
StoresModeling
第 4 步。 更改 isChecked
的状态(在您的 onBindViewHolder
内),取消选中所有其他状态并通过以下代码通知您的适配器:
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
if (isChecked) {
data.isChecked = true
listOfData.forEach {
if (!it.equals(data)) it.isChecked = false
}
notifyDataSetChanged()
}
}