Java 更改listView中选定项目的背景
当我试图更改Java 更改listView中选定项目的背景,java,android,xml,kotlin,Java,Android,Xml,Kotlin,当我试图更改列表视图中所选项目的背景时出现问题。当我选择项目A时,它的背景会改变。如果我选择项目B,它也会改变,但项目A不会回到默认背景 此可用于背景选定项目.xml的绘图: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true
列表视图中所选项目的背景时出现问题。当我选择项目A时,它的背景会改变。如果我选择项目B,它也会改变,但项目A不会回到默认背景
此可用于背景选定项目.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>
这是适配器中的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。
在适配器类中,创建一个变量来存储当前选定的ListItem
创建您的变量lastClicked
在适配器的构造函数中,将该变量设置为-1,这样它就不会指向任何东西
每当单击ListItem B时,将上次单击的ListItem(在本例中为Item A)背景更改为原始,然后将新的ListItem(Item B)位置保存到selectedItem
,并更改背景以显示新单击的ListItem
因为您没有将项目A设置为其原始颜色。当你点击B项时,你需要做两件事。首先,将项目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();
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();