gpt4 book ai didi

android - 使用数据绑定(bind)突出显示选定的 recyclerview 行

转载 作者:行者123 更新时间:2023-12-05 00:06:04 25 4
gpt4 key购买 nike

当用户点击它时,我试图突出显示我的 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 在 Activity 中实例化:

ItemClickListener listener = item -> viewModel.selectItem(item);

viewmodel 将 Item 的 isSelected 属性设置为 true:

public void selectItem(Item item)
{
item.setSelected(true);
}

但是,这不会更改行的背景。通过代码调试显示该项目的 isSelected 属性设置为 true。有什么我想念的吗?

最佳答案

使用BaseObservable

class Item extends BaseObservable {
private boolean isSelected = false;

@Bindable
public boolean getIsSelected() {
return isSelected;
}

public void setSelected(Boolean isSelected) {
this.isSelected = isSelected;
//Probably it'll has other name, i haven't testing it
notifyPropertyChanged(BR.selected);
}

}

它可以在没有 notfiyDataSetChanged 的​​情况下工作

关于android - 使用数据绑定(bind)突出显示选定的 recyclerview 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55818872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com