[英]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.