如何通过单击Kotlin中的按钮在RecyclerView中设置单选按钮?

时间:2018-04-02 09:18:05

标签: android android-recyclerview kotlin

我使用代码B为RecyclerView中的每个项目设置一个单选按钮,我希望单击一个普通按钮来检查RecyclerView中的单选按钮,其中MSid的_id等于给定值。

所以我在代码A中编写了一些代码,但我不知道如何编写下一步,你能帮助我吗?

通常,我需要以编程方式检查RecyclerView中的单选按钮。

你无法通过RadioGroup: How to check programmatically来做到这一点。 RecyclerView中的所有单选按钮都具有相同的ID。

RadioButton b = (RadioButton) findViewById(R.id.option1);
b.setChecked(true);

致Faysal Ahmed

为什么需要我这样做?

我的APP中有一个Search按钮和一个edittext控件,我在edittext控件中输入一个id值,然后点击Search按钮,找到记录,并自动检查RecyclerView中的单选按钮!

代码A

fun SetRadioChecked(id:Long){
        for (i in 0..(backupItemList.size-1)){
            if (backupItemList[i]._id==id){
                //Set the radio button as checked
            }
        }
}

代码B

class CustomAdapter (val backupItemList: List<MSetting>) : RecyclerView.Adapter<CustomAdapter.ViewHolder>() {

    val noRecord=-1
    private var mSelectedItem = noRecord

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.item_recyclerview, parent, false)
        return ViewHolder(v)
    }

    fun getSelectedItem():Int{
        return  mSelectedItem
    }

    override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) {
        holder.bindItems(backupItemList[position])
    }

    fun SetRadioChecked(id:Long){
        for (i in 0..(backupItemList.size-1)){
            if (backupItemList[i]._id==id){
                //Set the radio button as checked
            }
        }
    }

    override fun getItemCount(): Int {
        return backupItemList.size
    }

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        fun bindItems(aMSetting: MSetting) {

            itemView.tvSubject.text=aMSetting.name
            itemView.tvCreatedDate.text=aMSetting.createdDate.toDateString()
            itemView.tvDescription.text=aMSetting.description

            itemView.radioButton.setOnClickListener {
                mSelectedItem=adapterPosition
                notifyDataSetChanged();
            }

            if(adapterPosition == 0 && mSelectedItem == noRecord) {              
                itemView.radioButton.isChecked = true
                mSelectedItem=adapterPosition
            }
            else {
                itemView.radioButton.isChecked =(adapterPosition == mSelectedItem)
            }
        }

    }

}

0 个答案:

没有答案