J'ai un bouton like
dans mon RecyclerView
, ce que je veux est lorsque l'utilisateur a frappé le bouton like
pour la 1ère fois, la couleur de fond du bouton changer pour red
couleur, et lorsque le même utilisateur a frappé le bouton like
, le bouton changera Retour à la couleur par défaut qui est white
.Comment changer la couleur du bouton quand étant clic, et revenir à des couleurs par défaut dans le prochain clic?
j'ai vérifié pour quelques SO question, mais toujours havent obtenir ce que je want.So loin ma solution est comme ci-dessous, ne marche pas produire une erreur mais quand cliqué sur le bouton, rien ne se passe.
likeButton =(Button) view.findViewById(R.id.likeButton);
//here for user like the post
holder.likeButton.setOnClickListener(new View.OnClickListener() {
boolean clicked = true;
@Override
public void onClick(View v) {
if(!clicked){
holder.likeButton.setBackgroundColor(Color.RED);
clicked = true;
//here i will update the database
}else{
holder.likeButton.setBackgroundColor(Color.WHITE);
clicked = false;
//here i will update the database
}
}
});
J'ai vérifié SO answer aussi, donc je modifié mon code comme ci-dessous, mais rien ne se passe lorsque le bouton est cliqué.
holder.likeButton.setBackgroundColor(Color.WHITE);
holder.likeButton.setOnClickListener(new View.OnClickListener() {
ValueAnimator buttonColorAnim = null;
@Override
public void onClick(View v) {
if(buttonColorAnim != null){
buttonColorAnim.reverse();
buttonColorAnim = null;
//here i will update the database
}else{
final Button button = (Button) v;//here is the line I dont undestand
buttonColorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.WHITE);
buttonColorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
// set the background color
button.setBackgroundColor((Integer) animator.getAnimatedValue());
}
//here i will update the database
});
buttonColorAnim.start();
}
}
});
Quelqu'un s'il vous plaît souligner ce que je suis absent, ce que je veux est le bouton de changement de couleur quand programme étant cliquez pour la 1ère fois, et revenir par défaut pour le prochain clic (ce qui évite plusieurs comme d'un même utilisateur) .
Votre premier exemple semble être correct, cependant, votre variable 'clicked' a valeur attribuée'on' , ce qui signifie que '! clicked' est toujours faux et que votre code n'est jamais exécuté. – MatusMak
donc je dois attribuer false pour le 1er exemple? @MatusMak – ken
raison de downvote? – ken