here's what I wanna do: I want items in recyclerview
to be highlighted when clicked once and back to normal when clicked again.
so I have a recyclerview
. naturally I have an adapter
too. inside adapter is my viewholder
class where I have an onClickListener
set on itemview
.
whenever it is clicked I getTag()
. if it's value is "false"
I highlight itemview
and setTag("true")
, if its value is "true"
I color itemview
back to normal and setTag("false")
.
So far everything working fine but now comes the problem: when I scroll up (so that item is out of sight) and down again value of tag seems gone also highlighting of item.
I tried setIsRecycable(false)
but isn't working.
How can I preserve tags/highlighting on those items??
Edit: public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,View.OnLongClickListener {
final RelativeLayout rl = (RelativeLayout)itemView.findViewById(R.id.rl1);
final RelativeLayout rl2 = (RelativeLayout)itemView.findViewById(R.id.rl2);
public ViewHolder(final View itemView) {
super(itemView);
itemView.setTag("f");
//text layout
mSenderUsernameView = (TextView) itemView.findViewById(R.id.tv_username);
mSenderMessageView = (TextView) itemView.findViewById(R.id.et_message);
mSenderTimeView = (TextView) itemView.findViewById(R.id.tv_time);
mSenderUsernameView.setOnClickListener(this);
mSenderMessageView.setOnClickListener(this);
mSenderTimeView.setOnClickListener(this);
rl.setOnClickListener(this);
rl2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == rl.getId() || v.getId() == rl2.getId() || v.getId() == mSenderUsernameView.getId() ||
v.getId() == mSenderMessageView.getId() || v.getId() == mSenderTimeView.getId()) {
//check if msg is selected or not
//not selected
if(itemView.getTag().toString().equals("f")){ rl.setBackgroundResource(R.drawable.selected_msg_color_roundings);
rl2.setBackgroundResource(R.drawable.selected_msg_color_roundings);
itemView.setTag("t");
}
//selected
else if(itemView.getTag().toString().equals("t")){
//Toast.makeText(context, mMessages.get(getAdapterPosition()).getUsername()
//+ " at " + mPos + " is " + va, Toast.LENGTH_LONG).show();
rl.setBackgroundResource(R.drawable.msg_color_roundings);
rl2.setBackgroundResource(R.drawable.msg_color_roundings);
itemView.setTag("f");
}
}