再次单击带图像的浮动按钮(例如:添加到收藏夹)

时间:2017-12-08 17:28:45

标签: android firebase-realtime-database floating-action-button

首先点击:浮动按钮上的图片将变为填充红色,并将数据提交给Firebase。

第二次点击:浮动按钮上的图像将返回到正好边框,并将从Firebase中删除该项目。

但似乎是我第二次点击从Firebase删除项目无法正常工作。

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

            }


        }
    });

1 个答案:

答案 0 :(得分:1)

删除

{{1}}

形成setOnClickListener并将其放入setOnClickListener方法之外。当你点击按钮时,显示第一个将永远是真的,因为你只是创建它。