首页 > 解决方案 > recyclerview中的Rcyclvier,适配器结果在一个地方

问题描述

我正在制作android应用程序,我在recyclerview中使用recyclerview,所有工作都很好,但我在一个地方得到了我的第二个适配器结果

在 4 个结果中,两个结果应显示在上面

问题:

在我的 recyclerview 结果中应该显示如下: 1[1,2,3] // 这是我在 recyclerview 2[1,2,3] 中的 recyclerview

但我得到的结果类似于 1[] 2[1,2,3 1,2,3] // 但我得到的结果是这样的

历史.kt

class history : Fragment(), KodeinAware {

    lateinit var recyclerView : RecyclerView
    lateinit var layoutManager : LinearLayoutManager
    lateinit var orid_TA_Adapter : history_adapter
    lateinit var orid_TA : ArrayList<orderID_Am_ST>
    lateinit var db : FirebaseFirestore
    val auth = FirebaseAuth.getInstance()
    val Fuser = auth.currentUser

    override val kodein: Kodein by kodein { activity?.applicationContext!! }
    private val factory: CustomerViewModelFactory by instance()

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        val view= inflater.inflate(R.layout.fragment_history, container, false)
        recyclerView = view?.findViewById(R.id.history)!!
        layoutManager = LinearLayoutManager(activity as Context)
        recyclerView.layoutManager = layoutManager
        recyclerView.setHasFixedSize(true)

        orid_TA = arrayListOf()
        orid_TA_Adapter = history_adapter(orid_TA,requireContext())
        recyclerView.adapter = orid_TA_Adapter

        All_orid_TA()

        return view
    }

    private fun All_orid_TA(){

        db = FirebaseFirestore.getInstance()

        db.collection("Order Details1/${Fuser?.uid}/OrderID").addSnapshotListener(object :
            EventListener<QuerySnapshot> {
            override fun onEvent(value: QuerySnapshot?, error: FirebaseFirestoreException?) {
                if(error != null){
                    Log.e("Firestore error",error.message.toString())
                    return
                }
                for(doc: DocumentChange in value?.documentChanges!!){
                    if(doc.type == DocumentChange.Type.ADDED){
                        orid_TA.add(doc.document.toObject(orderID_Am_ST::class.java))
                    }
                }
                orid_TA_Adapter.notifyDataSetChanged()
            }
        })
    }
    
}

history_adapter.kt

class history_adapter(private var oidta:ArrayList<orderID_Am_ST>, val context: Context): RecyclerView.Adapter<history_adapter.ViewHolder>()  {
    val fireStore = FirebaseFirestore.getInstance()

   // lateinit var recyclerView : RecyclerView
    lateinit var layoutManager : LinearLayoutManager
    lateinit var history_product_Adapter : history_product_adapter
    lateinit var history_product : ArrayList<Add_to_FireStore>
    lateinit var db : FirebaseFirestore
    val auth = FirebaseAuth.getInstance()
    val Fuser = auth.currentUser
    private val viewPool = RecyclerView.RecycledViewPool()

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

        val slot_time_history: TextView = itemView.findViewById(R.id.slot_time_history)
        val delivery_address_history: TextView = itemView.findViewById(R.id.delivery_address_history)
        val totalamount_history: TextView = itemView.findViewById(R.id.totalamount_history)
        val recyclerView: RecyclerView = itemView.findViewById(R.id.product_history)
        val shop_name_history: TextView = itemView.findViewById(R.id.shop_name_history)
        val order_ID_history: TextView = itemView.findViewById(R.id.order_ID_history)
        val order_date_history: TextView = itemView.findViewById(R.id.order_date_history)
        val phone_number_history: TextView = itemView.findViewById(R.id.phone_number_history)
        val cancel_order: Button = itemView.findViewById(R.id.cancel_order)
        val status_order: TextView = itemView.findViewById(R.id.status_order)

    }
    
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.history_adapter, parent, false)
        return history_adapter.ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val orderId_TA : orderID_Am_ST = oidta[position]
        holder.slot_time_history.text = orderId_TA.slot_time
        holder.delivery_address_history.text = orderId_TA.deliver_address
        holder.totalamount_history.text = orderId_TA.total_ammount
        holder.order_ID_history.text = orderId_TA.order_id
        holder.order_date_history.text = orderId_TA.order_date
        holder.status_order.text = orderId_TA.status

        layoutManager = LinearLayoutManager(context)
        //layoutManager.initialPrefetchItemCount = oidta.size
        //layoutManager = LinearLayoutManager(holder.recyclerView.context, RecyclerView.VERTICAL, false)
        holder.recyclerView.layoutManager = layoutManager
        holder.recyclerView.setHasFixedSize(true)

        history_product = arrayListOf()
        history_product_Adapter = history_product_adapter(history_product, context)
        holder.recyclerView.adapter = history_product_Adapter
        holder.recyclerView.setRecycledViewPool(viewPool)




        //All_product_List(orderId_TA.order_id)

        db = FirebaseFirestore.getInstance()

        db.collection("customer/user/profile").document("${Fuser?.uid}").get().addOnCompleteListener {
            if(it.isSuccessful){
                val shop_name = it.result["shopname"]
                holder.shop_name_history.text = shop_name.toString()
                holder.phone_number_history.text = Fuser?.phoneNumber.toString()
            }
        }
        //oidta[holder.adapterPosition].order_id OID0a7bedfd469649bd9a
        //db.collection("Order Details1/${Fuser?.uid}/OrderID/${orderId_TA.order_id.toString()}
        db.collection("Order Details1/${Fuser?.uid}/OrderID/OID1945395f651948f186/order").addSnapshotListener(object :
            EventListener<QuerySnapshot> {
            override fun onEvent(value: QuerySnapshot?, error: FirebaseFirestoreException?) {
                if(error != null){
                    Log.e("Firestore error",error.message.toString())
                    return
                }
                for(doc: DocumentChange in value?.documentChanges!!){
                    if(doc.type == DocumentChange.Type.ADDED){
                        //history_product.add(doc.document.toObject(Add_to_FireStore::class.java))
                        history_product.add(doc.document.toObject(Add_to_FireStore::class.java))

                    }

                }
                
                //history_product
                history_product_Adapter.notifyDataSetChanged()

            }
        })
        
        val order_time:String = orderId_TA.order_date.toString()
        val sdf1 = SimpleDateFormat("dd/M/yyyy H:mm:ss")
        val currentDate_Time = sdf1.format(Date())
        val format = SimpleDateFormat("dd/M/yyyy H:mm:ss")
        val diff = format.parse(currentDate_Time).time - format.parse(order_time).time
        val hours:Int = (diff/3600000).toInt()
        if(hours <= 5000){
            if(holder.status_order.text == "cancelled"){
                holder.cancel_order.isClickable = false
                holder.cancel_order.setBackgroundColor(Color.GRAY)

            }else{
                holder.cancel_order.setOnClickListener {
                    val alertDialogBuilder = AlertDialog.Builder(context)
                    alertDialogBuilder.setTitle(Html.fromHtml("<font color='#00BFFF'>Cancel Order</font>"))
                    // alertDialogBuilder.setIcon(R.drawable.exit)
                    alertDialogBuilder.setMessage("Are you sure sure want to Cancel Order?")
                    alertDialogBuilder.setCancelable(false)
                    alertDialogBuilder.setPositiveButton(
                        Html.fromHtml("<font color='#00BFFF'>Yes</font>"),
                        DialogInterface.OnClickListener { dialog, which ->
                            Toast.makeText(context, "Cancelling Order", Toast.LENGTH_SHORT).show()
                            FirebaseFirestore.getInstance().collection("Order Details1/${Fuser?.uid}/OrderID").document("${orderId_TA.order_id}").update("status","cancelled")
                            holder.status_order.text = orderId_TA.status

                        })
                    alertDialogBuilder.setNegativeButton(
                        Html.fromHtml("<font color='#00BFFF'>No</font>"),
                        DialogInterface.OnClickListener { dialog, which ->
                            Toast.makeText(
                                context,
                                "You clicked cancel",
                                Toast.LENGTH_LONG
                            ).show()
                        })
                    val alertDialog: AlertDialog = alertDialogBuilder.create()
                    alertDialog.show()

                }
            }

        }else{
            holder.cancel_order.setBackgroundColor(Color.GRAY)
            holder.cancel_order.setOnClickListener {
                Toast.makeText(context, "Can not cancel order after 5 hours", Toast.LENGTH_SHORT).show()
            }
        }
        
    }

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

history_product_adapter.kt

class history_product_adapter(private var prod_det1:ArrayList<Add_to_FireStore>, val context: Context): RecyclerView.Adapter<history_product_adapter.ViewHolder>()  {
    class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView)  {

        val product__name: TextView = itemView.findViewById(R.id.product__name)
        val product__kgsize: TextView = itemView.findViewById(R.id.product__kgsize)
        val product__varientsize: TextView = itemView.findViewById(R.id.product__varientsize)

    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.history_product_adapter, parent, false)
        return history_product_adapter.ViewHolder(view)
    }

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

        val orderId_TA : Add_to_FireStore = prod_det1[position]

        holder.product__name.text = orderId_TA.productName
        holder.product__kgsize.text = orderId_TA.kgsize
        holder.product__varientsize.text = orderId_TA.varientsize
        
    }

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

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

解决方案


推荐阅读