I have a RecyclerView Adapter which needs to implement OnClick listeners on several of the views inside each item. However, the OnClick listener needs to change a variable outside of the listener, but this is a problem since it can only use final variables inside the OnClick listener. Here is my code where I implements the OnClick listener:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final boolean liked = false;
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// here I can only reference a final variable, but I need to change it
if (!liked){
liked = true;
}
}
});
}
I also tried to create the variable as a class variable in the ViewHolder class and use it as holder.liked, but still it needs to be final. How can i get aroud this issue?
Try implementing onClickListener on an extended viewholder instead: