删除Firebase中的单个项目

时间:2016-08-14 16:11:23

标签: android firebase firebase-realtime-database

点击时移除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);
                }


            }

        });

1 个答案:

答案 0 :(得分:2)

使用push()时,您会生成一个随机节点。

要删除它,您需要这样做:

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

但是,我似乎无法弄清楚你想要删除你的链接,因为你每次都要创建一个新链接,你是否试图删除你创建的最后一个?

无论如何,这是您保存密钥并删除该特定项目的方法。

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

然后使用

firebaseRef.child(pushId).setValue(null)

删除它。