2016-08-14 4 views
0

클릭하면 Firebase 데이터베이스에서 항목을 제거하는 데 약간의 문제가 있습니다. 버튼을 클릭하면 해당 데이터베이스의 모든 항목이 삭제됩니다.Firebase에서 단일 항목 제거

관련 코드는 다음과 같습니다. 어떤 도움을 많이 주시면 감사하겠습니다!

private static final String FIREBASE_URL = "https://athenajs.firebaseio.com/favourites"; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_details); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

     Firebase.setAndroidContext(this); 

     Intent in = getIntent(); 

     //   Get JSON values from previous intent 
     final String link = in.getStringExtra(KEY_LINK); 
     firebaseRef = new Firebase(FIREBASE_URL).child("link"); 
     vib = (Vibrator) this.getSystemService(VIBRATOR_SERVICE); 
     cardView = (CardView) findViewById(R.id.cv); 
     rv = (RecyclerView) findViewById(R.id.rv); 

     fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setTag(1); 
     fab.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       final int status = (Integer) view.getTag(); 
       if (status == 1) { 
        fab.setImageResource(R.drawable.ic_favorite_white_48dp); 
        Snackbar.make(view, "Added to favourites!", Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
        view.setTag(0); 

        firebaseRef.push().setValue(link); 
       } else { 
        fab.setImageResource(R.drawable.ic_favorite_border_white_48dp); 
        Snackbar.make(view, "Removed from favourites!", Snackbar.LENGTH_LONG) 
          .setAction("Action", null).show(); 
        view.setTag(1); 
        firebaseRef.removeValue(null); 
       } 


      } 

     }); 
+0

'removeValue()'를 호출하면 해당 위치의 모든 데이터가 제거됩니다. 귀하의 경우에는'/ links'가 될 것 같습니다. 해당 위치에서 특정 데이터를 제거하려면'firebaseRef.child ("keyOfTheChildToRemove"). removeValue()'와 같은 작업을 수행해야합니다. –

+0

알았습니다! 설명해 주셔서 감사합니다! :) –

답변

2

push()를 사용하면 임의의 노드가 생성됩니다. 난 당신이 새로운마다 생성 될 수 있기 때문에 귀하의 링크를 삭제하는 방법을 알아낼 수 없습니다, 그러나

firebaseRef.child(pushId).setValue(null); 

,, :

는이 작업을 수행 할 필요를 삭제하려면 마지막으로 만든 앨범을 지우려고하십니까?

어쨌든 키를 저장하고 해당 특정 항목을 삭제하는 방법입니다.

final String pushId = firebaseRef.push().getKey(); 
firebaseRef.child(pushId).setValue(link); 

한 다음 삭제

firebaseRef.child(pushId).setValue(null) 

를 사용합니다.

+0

답장을 보내 주셔서 감사합니다. 그것은 빛나는 것입니다. 그리고 그것은 단지 필요한 것입니다. 건배! :) –