我試圖改變recyclerview中專案的背景顏色,但這并不奏效。我不知道為什么。會不會是限制性布局的問題?我嘗試了幾個教程和類似的問題,但此時此刻我真的很迷惑。
配接器
class ExampleAdapter(private val exampleList: List<ExampleItem>)。)
RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder>()
{
var onItemClick: ((ExampleItem, Int) -> Unit)? = null)
var onItemLongClick: ((ExampleItem) -> Boolean)? = null。
var selected_item: Int = RecyclerView.NO_POSITION
//var examples: List<ExampleItem> = emptyList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ExampleViewHolder {
val itemView = LayoutInflater.from(parent.context).inflate(R.layout.item_recy, parent, false)
return ExampleViewHolder(itemView)
}
override fun onBindViewHolder( holder: ExampleViewHolder, position: Int){
val currentItem = exampleList[position].
holder.tv_ID.text = currentItem.id.toString()
holder.tv_NAME.text = currentItem.name
if (position == selected_item){
holder.itemView.setBackgroundColor(Color.parseColor("#7ADE4A"/span>)
} else {
holder.itemView.setBackgroundColor(Color.parseColor("#E0CC62") )
}
}
override fun getItemCount()。Int {
return exampleList.size
}
inner class ExampleViewHolder( itemView:View)。RecyclerView.ViewHolder(itemView) {
val tv_ID: TextView = itemView.tv_ID
val tv_NAME: TextView = itemView.tv_NAME
init {
itemView.setOnClickListener{
onItemClick?.invoke(exampleList[absoluteAdapterPosition], absoluteAdapterPosition)
itemView.setSelected(true)
notifyItemChanged(selected_item)
selected_item = absoluteAdapterPosition
notifyItemChanged(selected_item)
}
}
itemView.setOnLongClickListener {
onItemLongClick?.invoke(exampleList[absoluteAdapterPosition])
true
我在布局xml中使用ConstraintLayout和ScrollView。RecyclerView是在TableLayout中。這應該是個問題嗎?
uj5u.com熱心網友回復:
在上面的代碼中,你是根據條件來設定顏色的
。 position == selected_item
但是selected_item在viewholder點擊監聽器中被更新。意味著只有在我們點擊專案后,selected_item才會被更新。在此之前,它將是RecyclerView.NO_POSITION,當onBindViewHolder被呼叫,它將是NO_POSITION。
因此,你可以在ViewHolder中的onClickListener中處理背景顏色。
uj5u.com熱心網友回復:
改變-
span class="hljs-keyword">var selected_item: Int = RecyclerView.NO_POSITION
對這個-
var selected_item: Int = 0
以某種方式,RecyclerView.NO_POSITION這個值會自動更新,你的selected_item總是等于你當前的專案位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328693.html
標籤:
上一篇:nginx反向代理取決于請求的埠
