2017-04-19 85 views
0

我需要執行一個類似的按鈕,我找的邏輯是,當你點擊,顏色改變按鈕,當你再次點擊,你又具有相同的顏色我如何實現「喜歡」按鈕?

我用這個

// 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); 
        } 

       } 
      }); 

但沒有作品 有什麼建議嗎?

回答

0

您需要確保您的方法反轉了您在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

0

嘗試像

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); 
       } 


      } 
     });