I am added a background image highlight in RecyclerView Image:
but when i click the image previous selected image highlight is also shown. how to fix this. my code is
holder.colorImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.colorImage.setBackgroundResource(0);
for (int i = 0; i < colorId.size(); i++) {
holder.colorImage.setBackgroundResource(R.drawable.image_border);
}
}
});
What i get from question that one image will be show selected at a time . So its can be easily achieved by saving the selected image position as global, and notify the adapter . Below is an example .
class LAdater extends RecyclerView.Adapter<LAdater.ViewHolder> {
int selectedPosition;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_color, null));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (position == selectedPosition) {
holder.colorImage.setBackgroundResource(R.drawable.image_border);
} else {
holder.colorImage.setBackgroundResource(0);
}
}
@Override
public int getItemCount() {
return 9;
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView colorImage;
public ViewHolder(View itemView) {
super(itemView);
this.colorImage = (ImageView) itemView.findViewById(R.id.imageView);
colorImage.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.imageView) {
selectedPosition = getAdapterPosition();
notifyDataSetChanged();
}
}
}
}
Its just an example modify it as per your need.