我使用代码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)
}
}
}
}