2016-08-14 55 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

谢谢你的回答。这是一个很棒的选择,而这正是我们所需要的。干杯! :) –