我如何实现“喜欢”按钮?

问题描述:

我需要执行一个类似的按钮,我找的逻辑是,当你点击,颜色改变按钮,当你再次点击,你又具有相同的颜色我如何实现“喜欢”按钮?

我用这个

// LIKE 
      viewHolder.shakaLike.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if(viewHolder.shakaLike.isChecked()) { 
         Drawable myLike = getResources().getDrawable(R.drawable.nuevo_arrow_verde); 
         viewHolder.shakaLike.setBackgroundDrawable(myLike); 


         Drawable myLikeM = getResources().getDrawable(R.drawable.middleblack); 
         viewHolder.middleFinger.setBackgroundDrawable(myLikeM); 

         onLikeClick(model.getPostId()); 
        }else if (!viewHolder.shakaLike.isChecked()){ 
         Drawable m = getResources().getDrawable(R.drawable.nuevo_arrow_blanco); 
         viewHolder.shakaLike.setBackgroundDrawable(m); 
        } 

       } 
      }); 

但没有作品 有什么建议吗?

您需要确保您的方法反转了您在if检查中使用的布尔值。所以如果它不是已经被喜欢(喜欢= false),那么设置喜欢等于true,因为现在它被喜欢,并且将箭头设置为绿色背景。

viewHolder.shakaLike.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(!liked) { 
      liked = true; //because it wasn't liked(default state at start), but it was clicked to make it liked 
      viewHolder.middleFinger.setBackgroundDrawable(green); 
     } else if (liked){ 
      liked = false; //because it was liked and was clicked to unlike 
      viewHolder.shakaLike.setBackgroundDrawable(white); 
     } 
    } 
}); 
+0

我如何能在一个setOnClickLisenter实现这个() – TheQuestionerXxx

+0

初始化变量作为一个成员变量中,OnClickListener之外。然后得到你的buttonView的引用。下一步应用buttonView.setOnClickListener(new OnClickListener){public void onClick(View v){// if if statements goes here}} – rznazn

+0

我redid原来的帖子。帮助更多吗?您可以使用“喜欢”作为活动的成员变量或作为共享首选项,它将使用关闭和重新打开应用程序之间的最后一个值。 – rznazn

尝试像

Drawable green = getResources().getDrawable(R.drawable.nuevo_arrow_verde); 
Drawable white = getResources().getDrawable(R.drawable.nuevo_arrow_blanco); 

boolean liked = false; 

viewHolder.shakaLike.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       clicked = !clicked; 
       if(liked) { 
        viewHolder.middleFinger.setBackgroundDrawable(green); 
       } else if (!viewHolder.shakaLike.isChecked()){ 
        viewHolder.shakaLike.setBackgroundDrawable(white); 
       } 


      } 
     });