Android 如何从适配器外部访问Recyclerview.ViewHolder参数?

Android 如何从适配器外部访问Recyclerview.ViewHolder参数?,android,android-recyclerview,kotlin,android-viewholder,Android,Android Recyclerview,Kotlin,Android Viewholder,我已将recyclerview附加到SnapHelper。然后我为recyclerview制作了scrollListener,每次将项目捕捉到显示的中心时,我都会找到捕捉到的视图,然后通过finViewHolderForAdapterPosition()获取其viewHolder实例。现在我想访问在ViewHolder中创建的自定义变量。有什么方法可以访问它吗?基本上,这个变量是在onBindViewHolder()中设置的,它包含在这个快照视图中显示的自定义对象。所以我想从该视图中提取json

我已将recyclerview附加到SnapHelper。然后我为recyclerview制作了scrollListener,每次将项目捕捉到显示的中心时,我都会找到捕捉到的视图,然后通过finViewHolderForAdapterPosition()获取其viewHolder实例。现在我想访问在ViewHolder中创建的自定义变量。有什么方法可以访问它吗?基本上,这个变量是在onBindViewHolder()中设置的,它包含在这个快照视图中显示的自定义对象。所以我想从该视图中提取json对象

//inside onBindViewHolder()
holder.addressEntity = it
我尝试过这个,但是没有检测到这个变量。只能访问itemView(构造函数中作为参数发送的变量)

addressRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
        override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
            if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
                val centerView = snapHelper.findSnapView(addressRecyclerView.layoutManager)
                centerView!!.setBackgroundResource(R.drawable.payment_button_active)
                lastSnappedView = centerView
                val childViewHolder: RecyclerView.ViewHolder = recyclerView!!.findViewHolderForAdapterPosition(viewManager.getPosition(centerView))
                val selectedViewAddress: Address = childViewHolder.addressEntity //this doesnt work -- selectedViewAddress is red
                AndroidAssets.getInstance(context!!).deliveryAddress = selectedViewAddress 

            } else if (lastSnappedView != null){
                lastSnappedView!!.setBackgroundResource(R.drawable.payment_button_inactive)
                lastSnappedView = null
            }
        }
    })
ViewHolder内部适配器作为内部类:

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

    //address item views
    var addressEntity: Address? = null
    val cityName: TextView = itemView.findViewById(R.id.cityName)
    val streetName: TextView = itemView.findViewById(R.id.streetName)
    val addressIcon: ImageView = itemView.findViewById(R.id.addressIcon)
}

你只需要把这个支架铸造成你自己的,所以

val myHolder = (searchedHolder as ViewHolder)
//Access custom info with variable

ViewHolder可能返回空值,因为布局可能尚未就绪。如果您有ViewHolder的位置,那么如果您有一个对先前在适配器中传递的数据集合的引用,根据适配器中的位置在集合中检索该项会更好吗?