最初のクリック:フローティングボタンの画像が赤く塗りつぶされ、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();
}
}
});
これは 'else'に入りますか? –
親愛なるご両親、もう一度ユーザーが2回目をクリックすると、アイコンがshowingFirst = trueに戻ります。ここでは、アイテムは必ず –
が削除されます。それは、showingfirstが常にtrueに等しいので、 'onclicklistener' showingfirst = trueの場合、それはifに入り、showingfirstはfalseに等しいからです。別のクリックでもう一度 'onclicklistener'に入り、showing firstはtrueと等しくなります。elseステートメントを入力しません –