I've a recyclerview adapter that changes the entire row background color upon a condition. The row is clickable and has android:background="?attr/selectableItemBackground" set. Now, if I change the color (e.g. green), I lose the ripple effect. How can I set it programmatically? I need a white ripple in my case with green bg.
if (dish.isSelected()) {
// GREEN BACKGROUND NOT WORKING (NO RIPPLE AT ALL)
TypedValue typedValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.selectableItemBackground, typedValue, true);
viewHolderDish.itemView.setBackgroundResource(typedValue.resourceId);
viewHolderDish.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.green));
viewHolderDish.itemView.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(context, R.color.green)));
} else {
// TRANSPARENT BACKGROUND WORKS
TypedValue typedValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.selectableItemBackground, typedValue, true);
viewHolderDish.itemView.setBackgroundResource(typedValue.resourceId);
viewHolderDish.itemView.setBackgroundColor(ContextCompat.getColor(context, android.R.color.transparent));
}
Solved setting this as background drawable: