使用Firestore刷新Recyclerview后保持激活复选框

当我单击RecyclerView中的复选框时,它被激活,并且一切正常,但是当我刷新布局时,不再选中该复选框。

在使用Firestore刷新RecyclerView之后,如何保持复选框处于激活状态?

User.class:

Geth version: 1.9.6-stable
OS & Version: Ubuntu 18.04
Git Commit: bd05968077f27f7eb083404dd8448157996a8788
Architecture: amd64
Protocol Versions: [63]
Network Id: 1
Go Version: go1.11.5
Operating System: linux

我的适配器:CustomAdapter.class

class User {
        lateinit var userphoto: StorageReference
        lateinit var username:String
        lateinit var title:String
        lateinit var notes: String
        lateinit var id: String
        var isSelected:Boolean = false
        constructor( id: String?,username:String?,userphoto:StorageReference?,title: String?,notes: String?,isSelected:Boolean?) {
            this.title= title!!
            this.id= id!!
            this.username= username!!
            this.notes= notes!!
            this.isSelected= isSelected!!
            this.userphoto= userphoto!!
            }

        fun setIsSelected(selected: Boolean) {
            isSelected = selected
        }

    }

myMainactivity:Recycleractivity.class

class CustomAdapter( var mylist:ArrayList<User>)
    :RecyclerView.Adapter<CustomAdapter.viewHolde>() {
    var db = FirebaseFirestore.getInstance();
    var currentuser = FirebaseAuth.getInstance().currentUser!!
    private val notebookRef4 = db.collection("ShowData")
    lateinit var c: Context


    override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): viewHolde {

        var v = LayoutInflater.from(parent.context)
            .inflate(R.layout.iktem_list,parent,false)
        return viewHolde(v)
    }

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

    override fun onBindViewHolder(holder: viewHolde,position: Int) {
        holder.likee.setOnCheckedchangelistener(null)
        holder.likee.setChecked(mylist.get(position).isSelected)
        holder.likee.setOnCheckedchangelistener { buttonView,isChecked ->
            mylist.get(position).setIsSelected(isChecked)
            var mynote = UserUID(mylist.get(position).id)
            if (isChecked) {
                notebookRef4.document(currentuser.uid)
                    .collection("like").document(mylist.get(position).id).set(mynote)
                mylist.get(position).setIsSelected(isChecked)
            } else {
                notebookRef4.document(currentuser.uid)
                    .collection("like").document(mylist.get(position).id).delete()
                mylist.get(position).setIsSelected(false)
            }
        }
    }


    @SuppressLint("ParcelCreator")
    class viewHolde(item: View) : RecyclerView.ViewHolder(item){
        @SuppressLint("WrongViewCast")
        var likee = item.findViewById(R.id.toggleButton) as ToggleButton
    }}
rrrttt1984 回答:使用Firestore刷新Recyclerview后保持激活复选框

因为在从Firestore刷新期间,您始终将检查值设置为false。

myarray.add(User(id!!,username!!,str.child(currentuser),title!!,description!!,false)) // you set false here

要解决此问题,您必须将选中/取消选中数据存储在Firestore中,并在用户操作期间进行更新

本文链接:https://www.f2er.com/3125382.html

大家都在问