2017-12-08 19 views
1

첫 번째 클릭 : 플로팅 버튼의 이미지가 빨간색으로 바뀌고 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(); 

      } 


     } 
    }); 
+0

'else'를 입력하고 있습니까? –

+0

친애하는 폐하, 그렇지 않은 경우 사용자가 두 번째 시간을 클릭하면 아이콘이 showingFirst = true로 돌아갑니다. 여기 when 아이템은 아마도 –

+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"를 만드는 것을 중지하십시오. –