如何更改 bg recyclerview 特定位置 [Kotlin]
Posted
技术标签:
【中文标题】如何更改 bg recyclerview 特定位置 [Kotlin]【英文标题】:How to change bg recyclerview specific position [ Kotlin ] 【发布时间】:2021-02-23 01:14:12 【问题描述】:第一季度 我用 cardview 做了一些 recyclerview 我想点击某个位置并将 bg 当前位置更改为黑色,将适配器中的另一个位置更改为绿色
第二季度 我想更改适配器中的特定位置
class RecyclerAdapterBrand(private var imageList: List<Int>) :
RecyclerView.Adapter<RecyclerAdapterBrand.ViewHolder>()
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
val imageView: ImageView = itemView.findViewById(R.id.imgViewBrand)
val cardView: CardView = itemView.findViewById(R.id.cardViewBrand)
init
// Set Recycler Click
itemView.setOnClickListener v: View ->
val positionClick: Int = (adapterPosition + 1)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder
val v = LayoutInflater.from(parent.context).inflate(
R.layout.recy_brand_layout,
parent,
false
)
return ViewHolder(v)
override fun onBindViewHolder(holder: ViewHolder, position: Int)
holder.itemView.post
holder.imageView.setImageResource(imageList[position])
override fun getItemCount(): Int
return imageList.size
【问题讨论】:
分享你的代码sn-ps, 已编辑添加代码 【参考方案1】:您可以轻松更改单击项目的背景。您必须创建一个名为selectedposition
的变量并分配给-1
。每当您单击该项目时,您必须将单击的position
值设置为selectedPosition
。并在recyclerview 的项目ClickListener 方法上调用notifyDataSetChanged()
方法。然后在OnBindViewHolder()
方法中,你必须检查位置和选择的位置是否相同,将背景颜色设置为绿色。否则将背景颜色设置为黑色。
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
var selectedPosition=-1
val imageView: ImageView = itemView.findViewById(R.id.imgViewBrand)
val cardView: CardView = itemView.findViewById(R.id.cardViewBrand)
init
// Set Recycler Click
itemView.setOnClickListener v: View ->
selectedPosition=(adapterPosition + 1)
val positionClick: Int = (adapterPosition + 1)
notifyDataSetChanged()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder
val v = LayoutInflater.from(parent.context).inflate(
R.layout.recy_brand_layout,
parent,
false
)
return ViewHolder(v)
override fun onBindViewHolder(holder: ViewHolder, position: Int)
if(selectedPosition==position)
holder.itemView.setBackground(#green color)
else
holder.itemView.post
holder.imageView.setImageResource(#black color)
override fun getItemCount(): Int
return imageList.size
我已将这些行包含在您的适配器类中。希望它能解决您的问题。
【讨论】:
我在 setOnClickListener 中将 "selectedPosition" 更改为 2 但在 onBindViewHolder "selectedPosition" 上保持 -1 你在 setOnClickListener 中调用 notifyDataSetChanged() 了吗??以上是关于如何更改 bg recyclerview 特定位置 [Kotlin]的主要内容,如果未能解决你的问题,请参考以下文章
在使用 Firebase 和 ChildEventListener 时,如何在方向更改后保留 RecyclerView 的位置?