如何从适配器外部访问 Recyclerview.ViewHolder 参数?
How to access Recyclerview.ViewHolder params from outside of adapter?
我已将 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 inside adapter as inner class:
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
我已将 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 inside adapter as inner class:
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