2017-12-08 4 views
1

最初のクリック:フローティングボタンの画像が赤く塗りつぶされ、Firebaseにデータを送信します。画像付きフローティングボタンを2回クリックしてください(例:お気に入りに追加)

2回目のクリック:フローティングボタンの画像が境界線に戻り、Firebaseからアイテムが削除されます。

Firebaseからアイテムを削除する2度目のクリックは、万一動作していないようです。

btnLove.setOnClickListener(new View.OnClickListener() { 
     boolean showingFirst; 
     @Override 
     public void onClick(View v) { 
      if(showingFirst == true){ 
       btnLove.setImageResource(R.drawable.fav_filled_50); 
       showingFirst = false; 

       fav = new Favorites(Common.currentUser.getPhone(), 
         drinkId, 
         currentDrink.getName(), 
         currentDrink.getImage(), 
         currentDrink.getPrice() 
         ); 
       favorites.child(Common.currentUser.getPhone()).child(drinkId).addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         if(dataSnapshot.child(Common.currentUser.getPhone()).exists()) 
         { 
          favorites.child(Common.currentUser.getPhone()).child(drinkId).removeValue(); 
          favorites.child(Common.currentUser.getPhone()).child(drinkId).setValue(fav); 
         } 
         else 
         { 
          favorites.child(Common.currentUser.getPhone()).child(drinkId).setValue(fav); 
         } 
        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 
       }); 


      } else { 
       btnLove.setImageResource(R.drawable.fav_border_50); 
       btnLove.setTag(70); 
       showingFirst = true; 
       favorites.child(Common.currentUser.getPhone()).child(drinkId).removeValue(); 

      } 


     } 
    }); 
+0

これは 'else'に入りますか? –

+0

親愛なるご両親、もう一度ユーザーが2回目をクリックすると、アイコンがshowingFirst = trueに戻ります。ここでは、アイテムは必ず –

+0

が削除されます。それは、showingfirstが常にtrueに等しいので、 'onclicklistener' showingfirst = trueの場合、それはifに入り、showingfirstはfalseに等しいからです。別のクリックでもう一度 'onclicklistener'に入り、showing firstはtrueと等しくなります。elseステートメントを入力しません –

答えて

1

boolean showingFirst = true; 

を削除setOnClickListenerを形成し、setOnClickListener方法の外にこれを置きます。あなたがボタンをクリックしたときに、FirstFirstは常に真実になります。

+0

親愛なる、説明のおかげです。上記のコードを編集しましたが、Firebaseからアイテムを削除しないでください –

+0

onclickメソッド内で "showingFirst"の作成をやめてください。 –

関連する問題