2017-04-22 6 views
1

私はrecyclerViewを使用しています。各行は在庫を表し、Firebaseのaccoutに接続してユーザー認証を行い、ユーザーが作成されるたびにFirebaseデータベースに追加します私のFirebaseアカウントにサインアップする)、各ユーザーには "user_stocks"(子)フィールドがあり、私は在庫リストの行を削除するlongClickListenerを作成しました。問題は私もユーザーアカウントでこの在庫を削除する必要があることです。 Firebaseデータベースのフィールドを削除します(Android)

私はFirebaseデータベースから株式を削除する方法を見つけるカント:

public void deleteFromFirebase(String user_id) { 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference myRef = database.getReference("users").child(user_id); 

     myRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       User user = dataSnapshot.getValue(User.class); 
       //No metter what i did, it did not delete from fb 
      } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
    } 
}); 
} 

ことができるように私の正しい方向に私を指摘してください? ありがとう!

答えて

1

ジャスト値として、その子にnullを置く

FirebaseDatabase.getInstance().getReference("users").child(user_id).setValue(null); 

更新

、それは仕事をdoesntの

public void deleteFromFirebase(String user_id,final String stockName) { 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference myRef = database.getReference("users").child(user_id).child("user_stocks"); 

     myRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       for (DataSnapshot stock : dataSnapshot.getChildren()) { 
       if(stock.getValue().equals(stockName)) 
        stock.getRef().removeValue(); 
       } 
      } 

    @Override 
    public void onCancelled(DatabaseError error) { 
     // Failed to read value 
    } 
}); 
} 
+0

値、またそれは、エントリを削除しますか、単に変更することにより、削除値はnullになりますか? – Coder123

+0

@ Coder123それはエントリを削除します。 – pantos27

+0

@ Coder123また、あなたのリスナーは、値が変更されるたびに一度だけ起動しません。実際の値のfirebaseコンソールを確認してください – pantos27

関連する問題