我正在尝试使用 RecyclerView
作为水平 ListView
。我想弄清楚如何突出显示所选项目。当我单击其中一个项目时,它会被选中并正确突出显示,但是当我单击另一个项目时,第二个项目会与旧项目一起突出显示。
这是我的 onClick 函数:
@Override
public void onClick(View view) {
if(selectedListItem!=null){
Log.d(TAG, "selectedListItem " + getPosition() + " " + item);
selectedListItem.setBackgroundColor(Color.RED);
}
Log.d(TAG, "onClick " + getPosition() + " " + item);
viewHolderListener.onIndexChanged(getPosition());
selectedPosition = getPosition();
view.setBackgroundColor(Color.CYAN);
selectedListItem = view;
}
这是 onBindViewHolder
:
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.setItem(fruitsData[position]);
if(selectedPosition == position)
viewHolder.itemView.setBackgroundColor(Color.CYAN);
else
viewHolder.itemView.setBackgroundColor(Color.RED);
}
原文由 user65721 发布,翻译遵循 CC BY-SA 4.0 许可协议
我编写了一个基本适配器类来使用 RecyclerView 自动处理项目选择。只需从中派生您的适配器并使用带有 state_selected 的可绘制状态列表,就像您对列表视图所做的那样。
我有一篇关于它的 博客文章,但这里是代码: