[英]Change background on selected item in listView
我在嘗試更改listview
選定項目的背景時遇到問題。 當我選擇項目A時,它的背景就改變了。 如果我選擇項目B,它也會更改,但是項目A不會回到默認背景。
用於background selected_item.xml
此可繪制對象:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@color/colorMegna"/>
<item android:drawable="@color/colorWhite"/>
</selector>
這是XML item_kategori.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lay_nama_kategori"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical"
android:background="@drawable/selected_item">
<TextView
android:id="@+id/txtView_kategori"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textAllCaps="false"
android:textColor="@color/colorMegna"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"/>
</LinearLayout>
這是適配器中的setOnClickListener()
:
inner class CategoryViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
fun bind(kategori: Category){
itemView.txtView_kategori.text = kategori.category
itemView.setOnClickListener {
if(kategoriList[adapterPosition] == kategori){
itemView.isSelected = true
itemView.txtView_kategori.setTextColor(Color.WHITE)
}
}
}
}
您需要跟蹤選擇了哪個ListItem 。 在您的Adapter類中,創建一個變量,該變量存儲當前選擇的ListItem
lastClicked
selectedItem
並更改背景以顯示新單擊的ListItem 因為您沒有將項目A設置為其原始顏色。 單擊項目B時,您需要d0 2件事。 首先,將項目B設置為所需的顏色,然后將項目A重新設置為其原始顏色。 嘗試這個:
if(kategoriList[adapterPosition] == kategori){
itemView.isSelected = true
itemView.txtView_kategori.setTextColor(Color.WHITE)
} else {
itemView.isSelected = false
itemView.txtView_kategori.setTextColor(//any color you want)
}
notifydatasetChanged();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.