如果用户通过单击同一按钮[Kotlin]返回活动,则选中java Keep RecylerView adapter复选框
我有一个活动,其中有一个空的textview
用户点击这个textview
从位置列表中选择位置,这样当用户点击选择位置textview
时,它会打开带有checkbox
的位置列表
当用户选择位置(可以选择多个位置)并单击“完成”时,所有选择的位置都将显示在活动一上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
}
}
# 1 楼答案
当我在使用一个应用程序时,我也遇到了同样的问题,而且即使应用程序关闭,我也需要复选框。因此,我使用SharedReferences来存储和检索指示复选框状态的值,这样我就可以轻松地指定所有元素的状态。所以,如果你面临同样的问题,没有解决方案,你可以用这种方式
# 2 楼答案
启动
Activity
时,它不知道数据的状态。您需要提供Activity
的状态我的意思是,当用户选择他/她想要的位置并返回到
Activity One
时,您需要保留这些选择的位置,当用户再次想要更新位置时,您需要将这些先前选择的位置传递到第二个Activity
,然后相应地更新RecyclerView
的支持数据# 3 楼答案
您需要使用视图的项目状态(选择或不选择)更新视图
在适配器所在的活动/片段的onSaveInstanceState中,您应该将适配器状态(选择了哪些项(
getSelectedMedicineList
))写入捆绑包每当你的片段/活动被恢复时,只要用你保存的数据更新适配器
restoreSelectedMedicineList(selectedCheckBoxMedicineList: ArrayList<String>)
# 4 楼答案
只需在每个勾选和取消勾选上用一个标志更新模型类。选中此标志以勾选并取消勾选逻辑以恢复复选框状态
# 5 楼答案
在您的列表中,当选中复选框时,您会维护一个布尔字段,然后选定的位置值为真,并通知数据,在onbind viewholder中,您首先检查哪个位置为真。如果为true,则显示选中复选框,否则取消选中