【发布时间】:2022-01-23 09:54:03
【问题描述】:
这是我的 viewholderClass,它在多个屏幕上显示列表。
class TagViewHolder(itemView: View, listener: RecyclerViewItemClickListener?,isTraining: Boolean) : BaseViewHolder<AdapterTag>(itemView, listener) {
override fun onBindView(context: Context, data: AdapterTag ) {
itemView.tag_icon.setImageResource(data.getIconResId())
itemView.tag_name.text = data.getTitle()
itemView.tag_count.text = "[${data.getItemCount()}]"
//background color change of selected item in list
itemView.isSelected = (data.getItemCount() == 0)
}
}
这是我的可绘制类,它在下面的可绘制类中实现背景颜色的变化。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="@dimen/card_radius" />
<padding android:bottom="@dimen/card_vertical_padding"
android:left="@dimen/card_horizontal_padding"
android:right="@dimen/card_horizontal_padding"
android:top="@dimen/card_vertical_padding" />
<solid android:color="@color/cardBackgroundWithZeroItem"/>
</shape>
</item>
</selector>
这是我的列表背景类,它改变了 selected_state 中的背景颜色。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/training_tag_card_state"/>
<item>
<shape android:shape="rectangle">
<corners android:radius="@dimen/card_radius" />
<padding android:bottom="@dimen/card_vertical_padding"
android:left="@dimen/card_horizontal_padding"
android:right="@dimen/card_horizontal_padding"
android:top="@dimen/card_vertical_padding" />
<solid android:color="@color/cardBackground"/>
</shape>
</item>
</selector>
我的回收站视图列表显示在多个屏幕上,但我必须仅在特定屏幕上更改列表项的背景颜色,但在 tagViewHolder 中,它会更改每个屏幕上列表项的背景颜色 如何使用 isTraining:Boolean(它适用于我的屏幕,我想更改列表项的背景颜色)以便我可以在所需的列表项屏幕上使用背景颜色。我应该怎么做改变实现以获得上述问题的解决方案。
【问题讨论】:
标签: android android-layout android-recyclerview android-xml android-drawable