【发布时间】:2016-12-26 05:38:27
【问题描述】:
我正在尝试从 Recyclerview 中选择值,突出显示所选项目。我想改变背景颜色和文字颜色和图像。现在我正在使用以下代码。
selector_row:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/darker_gray" android:state_pressed="false" android:state_selected="true" />
<item android:drawable="@color/store_search_list_item_background"/>
</selector>
在 onBindViewHolder 上的 recyclerview 中:
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (selectedItems.get(position, false)) {
selectedItems.delete(position);
holder.itemView.setSelected(false);
}
else {
selectedItems.put(position, true);
holder.itemView.setSelected(true);
}
}
});
现在我可以突出显示选定的行。我的问题是 1)当我选择另一行时,它也会突出显示。我只想突出显示一行。如果用户选择另一行,则不应突出显示前一行。
2) 突出显示行时如何更改文本和图像。
请告诉我解决这两个问题的任何想法。
【问题讨论】:
-
在您的模型集变量中存储突出显示的信息。
-
操作后调用 notifyItemChanged()
-
@Demo Mail.. notifyItemChanged() 不适用于我的场景..
-
@Divyesh.. 你能详细解释一下吗?请..
-
您的模型包含所有项目的布尔字段,现在在您的 recyclerview onbindviewholder 方法中,检查布尔值,如果为真,则突出显示该项目。并在您的 Activity 类中,当单击项目时获取该项目位置并将该项目布尔值更改为 true。
标签: android android-recyclerview