Android 使用数据绑定高亮显示选定的recyclerview行
当用户单击我的recyclerview时,我试图突出显示它的一行 Recyclerview行布局:Android 使用数据绑定高亮显示选定的recyclerview行,android,android-recyclerview,android-databinding,android-mvvm,Android,Android Recyclerview,Android Databinding,Android Mvvm,当用户单击我的recyclerview时,我试图突出显示它的一行 Recyclerview行布局: <data> <variable name="model" type="ItemRow" /> <variable name="listener" type="ItemClickListener" /> </data> <com.google.android.material.card.MaterialCardView
<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>
viewmodel将Item的isSelected属性设置为true:
public void selectItem(Item item)
{
item.setSelected(true);
}
但是,这不会更改行的背景。通过代码调试,我发现该项的isSelected属性设置为true。我缺少什么吗?使用BaseObservable
类项扩展BaseObservable{
私有布尔值isSelected=false;
@装订的
公共布尔getIsSelected(){
选举产生的回报;
}
公共无效设置已选(布尔值已选){
this.isSelected=isSelected;
//可能它会有另一个名字,我还没有测试过
notifyPropertyChanged(BR.选中);
}
}
它将在不更改notfiyDataSetChanged的情况下工作您是否应该通知适配器项目已更改。还有,你为什么不使用选择器而不使用数据绑定呢?@Fred selectors就像在recyclerview选择库中一样?我觉得这太过分了,因为我只想选择一行。我尝试使用notifyItemChanged和NotifyDataSetChanged,但似乎没有帮助,因为我从未听说过这样的库。我指的是Android选择器,正是针对这个用例的。还有另外一个名字-
public void selectItem(Item item)
{
item.setSelected(true);
}