代码之家  ›  专栏  ›  技术社区  ›  Nasser El Arab

Kotlin:单选按钮单次检查控件

  •  0
  • Nasser El Arab  · 技术社区  · 7 年前

    我有一个简单的应用程序,以recyclerview fragment开始,每一行都有单选按钮,但问题是我不能只选中一个单选按钮,我需要它,如果我选中一个之后,旧的一个取消选中自动 这是我的适配器

    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 回复  |  直到 7 年前
        1
  •  1
  •   Abner Escócio    7 年前

    很简单。

    步骤1。 使用 CheckBox 相反 RadioButton 因为它们不能像文档那样被取消检查

    但是,与复选框相反,单选按钮一旦选中,用户就不能取消选中。

    步骤2。 创建属性 var isChecked: Boolean = false 在你们班上 StoresModeling

    步骤3。 抹去你所有的身体 ViewHolder (你用错了),就写吧

    class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView)
    

    并填充 商店熟食 在你的内心 onBindViewHolder

    步骤4。 更改状态(在 OnBindViewHolder 你的 isChecked ,取消选中所有其他项,并通过以下代码通知适配器:

    checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
          if (isChecked) {
                 data.isChecked = true
                 listOfData.forEach {
                        if (!it.equals(data)) it.isChecked = false
                 }
                 notifyDataSetChanged()
          }
    }