Android 在使用MVVM体系结构和数据绑定时,如何突出显示recyclerview项?
在坚持MVVM原则和使用数据绑定的同时,我试图突出显示一个recyclerview项。但是我很难理解如何处理选择行 当前,我使用以下界面将recyclerview项onclick传递给viewmodel:Android 在使用MVVM体系结构和数据绑定时,如何突出显示recyclerview项?,android,android-recyclerview,android-databinding,android-mvvm,Android,Android Recyclerview,Android Databinding,Android Mvvm,在坚持MVVM原则和使用数据绑定的同时,我试图突出显示一个recyclerview项。但是我很难理解如何处理选择行 当前,我使用以下界面将recyclerview项onclick传递给viewmodel: public interface ItemClickListener { void onItemClicked(String id); } 视图onclick是数据绑定的: <layout xmlns:android="http://schemas.android.com/ap
public interface ItemClickListener
{
void onItemClicked(String id);
}
视图onclick是数据绑定的:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="model"
type="Item" />
<variable
name="listener"
type="ItemClickListener" />
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{model.name}"
android:onClick="@{() -> listener.onItemClicked(model.name)}" />
</layout>
viewmodel实现了该接口,因此我有一个对该项的引用。侦听器在活动中实例化并传递到适配器中
我如何处理选择一个recyclerview项目(并给它一个背景色)?viewholder是否应该实现onClickListener(视图视图)并将其与位置一起通过我的界面?在MVVM体系结构中,您的UI由ViewModel公开的数据驱动。在您的特定情况下,这意味着您在ViewHolder中显示的
项应该能够判断它是否被选中。要做到这一点,最简单的解决方案是在项
类中添加isSelected
布尔值。该布尔值将允许您决定在布局中使用哪个backgroundColor
要以MVVM的方式将所有内容链接在一起,您的ItemClickListener
实现应该通过切换刚刚单击的项的isSelected
布尔值来修改ViewModel的列表
如果您使用的是体系结构组件LiveData,请确保发布列表的新值,我认为这将通知您的适配器更改。如果您不这样做,您的UI将不会得到刷新,因为RecyclerView将不会意识到正在显示的数据中的更改