gpt4 book ai didi

java - 如果用户通过单击同一按钮返回 Activity ,请保持 RecyclerView 适配器复选框处于选中状态[Kotlin]

转载 作者:行者123 更新时间:2023-11-29 07:25:07 26 4
gpt4 key购买 nike

我有一个 Activity ,其中有一个空的 textview 用户单击此 textview 以从位置列表中选择位置,因此当用户单击选择位置 textview 它将使用 checkbox 打开位置列表。

当用户选择位置(可以选择多个位置)并单击完成时,所有选定的位置将显示在 Activity 一 textView 上,所有选定的选中 textview 值现在用户单击相同的 textview 以添加更多位置,然后在 recylerview 列表中应检查所有先前检查的项目。我没有得到所有以前选中的复选框。

我不知道如何实现这一点。我需要选中所有旧的 checkbox,如果单击相同的 textview,用户可以选择更多新的复选框。请帮我得到这个。 Java 代码也会对我有帮助

下面是我的 recylerView 适配器代码:-

    class SelectMedicineAdapter (val medicineList : ArrayList<String>, val context: Context) : RecyclerView.Adapter<RecyclerView.ViewHolder>()  {
var selectedCheckBoxMedicineList : ArrayList<String> = ArrayList()

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

holder.itemView.textViewSelectMedicineName.text = medicineList.get(position)

holder.itemView.checkboxSelectMedicine.setOnCheckedChangeListener { buttonView, isChecked ->
val itemText = medicineList.get(position)

if (isChecked) {
selectedCheckBoxMedicineList.add(itemText)

} else {
selectedCheckBoxMedicineList.remove(itemText)
}


}
}

fun getSelectedMedicineList(): ArrayList<String> {
return selectedCheckBoxMedicineList
}

override fun getItemCount(): Int {

return medicineList.size
}

override fun onCreateViewHolder(holder: ViewGroup, p1: Int): RecyclerView.ViewHolder {

val v= (LayoutInflater.from(context).inflate(R.layout.row_select_medicine_adapter,holder,false))
return ViewHolder(v)
}

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

var textViewSelectMedicineName = itemView.textViewSelectMedicineName
var imageViewPlusButton = itemView.imageViewPlusButton
var imageViewMinusButton = itemView.imageViewMinusButton
var checkboxSelectMedicine = itemView.checkboxSelectMedicine

}


}

最佳答案

您需要使用项目状态(选中或未选中)更新 View 。

在适配器所在的 Activity/fragment 的 onSaveInstanceState 中,您应该将适配器状态(选择了哪些项目(getSelectedMedicineList))写入包。

每当您的 fragment/Activity 恢复时,只需使用您保存的数据更新适配器 restoreSelectedMedicineList(selectedCheckBoxMedicineList: ArrayList<String>)

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

holder.itemView.textViewSelectMedicineName.text = medicineList.get(position)

holder.itemView.checkboxSelectMedicine.setOnCheckedChangeListener(null)
if(selectedCheckBoxMedicineList.contains(itemText)) {
holder.itemView.setChecked(true)
} else {
holder.itemView.setChecked(false)
}

holder.itemView.checkboxSelectMedicine.setOnCheckedChangeListener { buttonView, isChecked ->
val itemText = medicineList.get(position)



if (isChecked) {
selectedCheckBoxMedicineList.add(itemText)

} else {
selectedCheckBoxMedicineList.remove(itemText)
}


}
}

fun restoreSelectedMedicineList(selectedCheckBoxMedicineList: ArrayList<String>) {
this.selectedCheckBoxMedicineList = selectedCheckBoxMedicineList
notifyDataSetInvalidated()
}

关于java - 如果用户通过单击同一按钮返回 Activity ,请保持 RecyclerView 适配器复选框处于选中状态[Kotlin],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54741390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com