首页 > 解决方案 > 如何在另一个类适配器中访问给定适配器的 onBindViewHolder 项?

问题描述

我想在下一个类 ChildViewHolder 中的 onBindViewHolder 中访问 DayOfWeek,以便我可以在 ChildRecyclerAdapter 中所示的 if 语句中使用它。

class ParentRecyclerAdapter(private var parentArrayList: ArrayList<String>?, private var context: Context, private var mTableFeed: TableFeedJava?
) :  RecyclerView.Adapter<ParentRecyclerAdapter.ParentViewHolder>() {


 override fun onBindViewHolder(holder: ParentViewHolder, position: Int) {
        holder.DayOfWeek.text = this.parentArrayList!![position]
}
 override fun getItemCount(): Int {
        return parentArrayList!!.size
    }

    inner class ParentViewHolder (itemView: View) : RecyclerView.ViewHolder(itemView)

    {
        internal var DayOfWeek: TextView = itemView.findViewById(R.id.dayOfWeek)
        internal var ChildRV: RecyclerView = itemView.findViewById(R.id.ChildRecycler)
}

这是 ChildRecyclerAdapter。我需要父母的 DayOfWeek 才能在此类中使用它

class ChildRecyclerAdapter(
    private var time: ArrayList<String>,
    var context: Context,
    private val parentArrayList: ArrayList<String>? = null


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

                holder.timeOfDay.text = time[position]
                mTableFeed = TableFeedJava(context,mLectures)
                holder.childofChildRV.adapter = mTableFeed

//THIS IS WHERE I PLAN ON USING THE IMPORTED 'DayOfWeek' AS SEEN ON 'holder.timeOfDay.text'
               for (i in mTimeSpinner!!.indices){
                   if(holder.timeOfDay.text == mTimeSpinner!![i]){
                       holder.childofChildRV.visibility = View.VISIBLE
                   }else{
                       holder.childofChildRV.visibility = View.INVISIBLE
                   }
               }


我知道代码在 Kotlin 中,但我也可以接受 Java 答案。

标签: javakotlinandroid-recyclerviewglobal-variablesadapter

解决方案


你为什么不简单地传递一个对象

private var time: ArrayList<YourClass> 

代替

private var time: ArrayList<String>

在我看来是最简单的解决方案


推荐阅读