recyclerview将上一个选中态item的背景平移到现在点击item上,上一个item还原背景
时间: 2024-03-17 18:46:13 浏览: 79
在RecyclerView中实现item点击效果
5星 · 资源好评率100%
您可以通过在RecyclerView的Adapter中记录上一个选中的item位置,然后在onBindViewHolder方法中根据当前位置是否为上一个选中位置来设置对应item的背景,从而实现您的需求。
具体实现步骤如下:
1. 在Adapter中添加一个变量记录上一个选中的item位置:
```java
private int mLastSelectedPosition = -1;
```
2. 在RecyclerView的点击事件中更新mLastSelectedPosition的值:
```java
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
// 点击事件
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 更新上一个选中位置
int lastSelectedPosition = mLastSelectedPosition;
mLastSelectedPosition = position;
// 刷新上一个选中位置和当前选中位置的item视图
notifyItemChanged(lastSelectedPosition);
notifyItemChanged(position);
// 处理点击事件
// ...
}
});
// 根据位置设置item背景
if (position == mLastSelectedPosition) {
// 当前选中态item
holder.itemView.setBackgroundResource(R.drawable.selected_bg);
} else {
// 普通item
holder.itemView.setBackgroundResource(R.drawable.normal_bg);
}
}
```
在上述代码中,我们在点击事件中更新了mLastSelectedPosition的值,并通过notifyItemChanged方法刷新了上一个选中位置和当前选中位置的item视图。同时,在onBindViewHolder方法中根据位置设置item的背景,如果是当前选中态item,则设置为selected_bg,否则设置为normal_bg。
希望这个方法能够帮助到您。
阅读全文