如何解决如何更改bg recyclerview的特定位置[Kotlin]
第一季度 我用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
}
解决方法
您可以轻松更改单击项的背景。您必须创建一个名为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
}
我已将这些行包含在适配器类中,希望它能解决您的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。