Change Image Resource When Clicking On Imageview Inside The Recyclerview
I'm trying to change my device's image resource inside the recyclerview at the specific position whenever i click at it (click at the image, not the item). I tried to put setOnClic
Solution 1:
First of all, there's no need of that for loop inside onBindViewHolder()
, as this method is called for all the items in the list and you don't have to explicitly run loop for all the items again.
Replace this piece of code:
for(int i=0;i<list.size();i++){
if(position==i){
holder.device.setOnClickListener(new View.OnClickListener() {
@Override
publicvoidonClick(View v) {
if(list.get(position).flag==true)
holder.device.setImageResource(R.drawable.fan_off);
elseif(list.get(position).flag==false){
holder.device.setImageResource(R.drawable.fan_on);
}
}
});
}
}
with this:
// here setTag is used to attach the position with each view being inflated.
holder.device.setTag(position);
holder.device.setOnClickListener(new View.OnClickListener() {
@Override
publicvoidonClick(View v) {
int pos = (int)v.getTag();
if(list.get(pos).flag==true){
list.get(pos).flag = false;
}
else{
list.get(pos).flag = true;
}
notifyDataSetChanged();
}
});
if(list.get(position).flag == true)
holder.device.setImageResource(R.drawable.fan_off);
else
holder.device.setImageResource(R.drawable.fan_on);
we check here if the flag is true or false and when user clicks on button, change the values accordingly so that when notifyDataSetChanged() is called it populates the views with newly changed values of flags and hence make the relevant views selected or unselected.
Post a Comment for "Change Image Resource When Clicking On Imageview Inside The Recyclerview"