在Android RecyclerView中,当选择和交换项目时,可能会出现不必要的高亮问题。这个问题通常是由于RecyclerView的复用机制引起的。下面是解决这个问题的一种方法,包含代码示例:
private int selectedPosition = RecyclerView.NO_POSITION;
public MyViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
notifyItemChanged(selectedPosition); // 取消之前选中项目的高亮
selectedPosition = position;
notifyItemChanged(selectedPosition); // 高亮当前选中的项目
}
}
});
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// 设置项目的高亮状态
if (position == selectedPosition) {
holder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.selected_color));
} else {
holder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.normal_color));
}
}
通过以上方法,可以实现在RecyclerView中选择和交换项目时的正确高亮显示,避免不必要的高亮问题。