首页 > 解决方案 > 如何更新回收站视图(即使用分页)kotlin android?

问题描述

每次按下按钮时,我都想更新 recyclerview(即使用分页)。当我按下磁贴中的按钮时,每件事都按预期工作,因为我的 textview 会发生变化。但是当我滚动 recyclerview 并再次返回到原​​始图块时,recyclerview 项目数据更改回原始表单。单击按钮时,我想永久更新回收站视图中的数据。这是我的回收站视图类。我正在使用分页来获取数据到回收站视图。当我按下时,btn_notify我试图将 textview 更改tvstatus1"Verified"永久。无需重新启动活动。这是ProductViewHolder课内


package com.example.bloodbankcompany.recyclerview
class recyclerViewAdmin : BaseActivity() {



private val mFireStore = FirebaseFirestore.getInstance()
const val TOPIC = "/topics/myTopic"

@Suppress("DEPRECATION")

class recyclerViewAdmin : BaseActivity() {

    val firebaseFirestore2= FirebaseFirestore.getInstance().collection("applicationForm")
  
    override fun onCreate(savedInstanceState: Bundle?) {

        val blooodgi1=intent.getStringExtra("bloodgroup")

        val districti1= intent.getStringExtra("district")
        super.onCreate(savedInstanceState)
       
//        var ref =FirebaseFirestore.getInstance().collection("applicationForm").whereNotEqualTo("bloodgroup", bloodg)
//       ref = ref.whereEqualTo("email", "jojoy500@gmail.com")
        var ref =FirebaseFirestore.getInstance().collection("applicationForm")

       

        setContentView(R.layout.activity_recycler_view_admin)


        val config = PagedList.Config.Builder().setInitialLoadSizeHint(20).setPageSize(2).build()

        val options = FirestorePagingOptions.Builder<User2>().setLifecycleOwner(this)
            .setQuery(ref, config, object : SnapshotParser<User2>{
                override fun parseSnapshot(snapshot: DocumentSnapshot): User2 {

                    val user = snapshot.toObject(User2::class.java)
                    return user!!


                }

            }).build()


        val adapter = object : FirestorePagingAdapter<User2, ProductViewHolder>(options){
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder {
                val view = LayoutInflater.from(parent.context).inflate(R.layout.tileadminr,parent,false)
                return ProductViewHolder(view)

            }

            override fun onBindViewHolder(holder: ProductViewHolder, position: Int, model: User2) {
                Log.d("TAG","Position" +position+" model"+model.toString())

//             holder.address.text =user.address


                holder.bind(model)

            }

            override fun onLoadingStateChanged(state: LoadingState) {
                super.onLoadingStateChanged(state)

                when(state){
                    com.firebase.ui.firestore.paging.LoadingState.LOADING_INITIAL ->
                        Log.d("TAG","LOADING_INITIAL" )

                    com.firebase.ui.firestore.paging.LoadingState.LOADING_MORE ->
                        Log.d("TAG","LOADING_MORE" )
                    com.firebase.ui.firestore.paging.LoadingState.LOADED ->
                        Log.d("TAG","LOADED" )
                    com.firebase.ui.firestore.paging.LoadingState.FINISHED->
                        Log.d("TAG","FINISHED" )
                    com.firebase.ui.firestore.paging.LoadingState.ERROR ->
                        Log.d("TAG","ERROR" )
                }


            }

        }

        RecyclerViewa1.layoutManager=  LinearLayoutManager(this)
        RecyclerViewa1.adapter = adapter

    }

    

 class ProductViewHolder(view: View) : RecyclerView.ViewHolder(view){
    fun bind(user2: User2){

        

        itemView.tvaddress1.text=user2.address
        itemView.tvbloodg1.text =user2.bloodgroup
        itemView.tvfirstname1.text= user2.name
        itemView.tvemail1.text= user2.email
        itemView.tvphone11.text=user2.phone
        itemView.tvstatus1.text= user2.status
        itemView.tvdonated1.text= user2.donatedBy.toString()
        itemView.tvid.text= user2.id
        val phonen: String? =user2.phone
        val emailt: String?= user2.email
        val requester_name = user2.name
        val requester_no = user2.phone
        val status= itemView.tvstatus1.text

    itemView.btn_notify.setOnClickListener {
//            itemView.btn_notify.visibility = View.GONE
            FirebaseMessaging.getInstance().subscribeToTopic(TOPIC)
            val washingtonre = mFireStore.collection("applicationForm").document("$idp")

            washingtonre.update("status","Verified").addOnCompleteListener {
                itemView.tvstatus1.text= "Verified"}

            val title = "New blood donation request."
            val message = "Please contact $requester_name at $requester_no."
            //val recipientToken = etToken.text.toString()
           
//        Glide.with(itemView).load(user2)
    }

    
}
}

标签: android-studiokotlingoogle-cloud-firestoreandroid-recyclerviewpaging

解决方案


推荐阅读