I have a CheckBox in my recyclerview items with Gone visibility . I want to make it visible for all items in recyclerview when I have a longClick on one of items .so I did
You could create a boolean in your adapter that stores the information if the there was a long press or not and in your onBindViewHolder
you check whether this is true or false and set the visibility according to it: holder.chk_faviorateVideo.setVisibility(longPressed ? View.VISIBLE : View.GONE);
Then in your click listener you toggle this variable and call notifyDataSetChanged()
Your Holder
holds only current item, that's why you see a result in this item only.
First option is just to make some boolean flag and call notifyDataSetChanged()
, in onBindViewHolder()
just use that flag to set visibility.
Also you can try to create collection of your CheckBoxes
or Holders
and on long click iterate them to make checkboxes visible. As for me, it's not the worst option.
If you don't want to have a loop for that, another way I see, is to implement Observer pattern - on checkbox creation you should add it as a subscriber to receive visibility notification.
Also there is a good possibility to use RX here:
- on long click you emit event
- and before you subscribe your checkboxes on that event.
It's also related to Observer
pattern.