我尝试更改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)
}
}
}
}
答案 0 :(得分:0)
您需要跟踪选择了哪个 ListItem 。 在您的Adapter类中,创建一个变量,该变量存储当前选定的 ListItem
lastClicked
selectedItem
,并更改背景以显示新单击的 ListItem 答案 1 :(得分:0)
因为您没有将项目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();