Я пытаюсь выделить строку моего recyclerview, когда пользователь нажимает на нее.
Макет строки Recyclerview:
<data>
<variable name="model" type="ItemRow" />
<variable name="listener" type="ItemClickListener" />
</data>
<com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{model.name}"
android:onClick="@{() -> listener.onItemClicked(model)}"
android:background="@{model.isSelected ? @drawable/white : @drawable/blue}"/>
</com.google.android.material.card.MaterialCardView>
OnClickListener создается в действии:
ItemClickListener listener = item -> viewModel.selectItem(item);
Модель представления устанавливает для свойства isSelected элемента Item значение true:
public void selectItem(Item item)
{
item.setSelected(true);
}
Однако это не меняет фон строки. Отладка кода показывает, что для свойства isSelected элемента установлено значение true. Есть что-то, что мне не хватает?
notifyItemChanged(<position of item>
. Кроме того, по какой причине вы не используете селекторы вместо привязки данных? - person Fred   schedule 24.04.2019