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