Android 如何在 RecyclerAdapter 中使用全局值
How to use global value in RecyclerAdapter on Android
我想在我的应用程序中使用 RecyclerView
,我想在这个 RecyclerView
的 adapter
中使用一些数据。
我编写代码,但 未找到 我的数据到 ViewHolder
,我无法将此数据访问到 ViewHolder
!
我的适配器代码:
class CategoryAdapter(private val catsModel: MutableList<HomeCatsListResponse.Data.Result>) :
RecyclerView.Adapter<CategoryAdapter.ViewHolder>() {
private var userData = ADDRESS_LOCATION_LAT
override
fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.type_item, parent, false)
return ViewHolder(v)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val type = catsModel[position]
holder.bindData(type)
}
override fun getItemCount(): Int {
return catsModel.size
}
fun setData(catsList: MutableList<HomeCatsListResponse.Data.Result>) {
catsModel.addAll(catsList)
notifyDataSetChanged()
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val txtName = itemView.findViewById<TextView>(R.id.tv_item)
fun bindData(type: HomeCatsListResponse.Data.Result) {
txtName.text = type.name
}
}
}
我无法使用 userData 进入 ViewHolder
!!!
我该如何修复它?
你应该使用 #onBindViewHolder
方法。
例如,您想在 ViewHolder
中使用 userData
。您可以在 ViewHolder 中编写一个采用 userData 参数的方法。
假设您可以像这样使用 bindData 方法。
class ViewHolder(itemView: View) :
RecyclerView.ViewHolder(itemView) {
private val txtName = itemView.findViewById<TextView>(R.id.tv_item)
fun bindData(userDate: UserData, type:
HomeCatsListResponse.Data.Result) {
//Use useData here
txtName.text = type.name
}
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val type = catsModel[position]
holder.bindData(userData, type)
}
将 userData 定义为 CategoryAdapter 中的伴随对象
companion object {
lateinit var userData =""
}
在 CategoryAdapter 中初始化它
init {
userData = ADDRESS_LOCATION_LAT
}
然后从ViewHolder中访问
fun accessVar(){
print(userData )
}
我想在我的应用程序中使用 RecyclerView
,我想在这个 RecyclerView
的 adapter
中使用一些数据。
我编写代码,但 未找到 我的数据到 ViewHolder
,我无法将此数据访问到 ViewHolder
!
我的适配器代码:
class CategoryAdapter(private val catsModel: MutableList<HomeCatsListResponse.Data.Result>) :
RecyclerView.Adapter<CategoryAdapter.ViewHolder>() {
private var userData = ADDRESS_LOCATION_LAT
override
fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.type_item, parent, false)
return ViewHolder(v)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val type = catsModel[position]
holder.bindData(type)
}
override fun getItemCount(): Int {
return catsModel.size
}
fun setData(catsList: MutableList<HomeCatsListResponse.Data.Result>) {
catsModel.addAll(catsList)
notifyDataSetChanged()
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val txtName = itemView.findViewById<TextView>(R.id.tv_item)
fun bindData(type: HomeCatsListResponse.Data.Result) {
txtName.text = type.name
}
}
}
我无法使用 userData 进入 ViewHolder
!!!
我该如何修复它?
你应该使用 #onBindViewHolder
方法。
例如,您想在 ViewHolder
中使用 userData
。您可以在 ViewHolder 中编写一个采用 userData 参数的方法。
假设您可以像这样使用 bindData 方法。
class ViewHolder(itemView: View) :
RecyclerView.ViewHolder(itemView) {
private val txtName = itemView.findViewById<TextView>(R.id.tv_item)
fun bindData(userDate: UserData, type:
HomeCatsListResponse.Data.Result) {
//Use useData here
txtName.text = type.name
}
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val type = catsModel[position]
holder.bindData(userData, type)
}
将 userData 定义为 CategoryAdapter 中的伴随对象
companion object {
lateinit var userData =""
}
在 CategoryAdapter 中初始化它
init {
userData = ADDRESS_LOCATION_LAT
}
然后从ViewHolder中访问
fun accessVar(){
print(userData )
}