点击时移除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 :(得分:2)
使用push()时,您会生成一个随机节点。
要删除它,您需要这样做:
firebaseRef.child(pushId).setValue(null);
但是,我似乎无法弄清楚你想要删除你的链接,因为你每次都要创建一个新链接,你是否试图删除你创建的最后一个?
无论如何,这是您保存密钥并删除该特定项目的方法。
final String pushId = firebaseRef.push().getKey();
firebaseRef.child(pushId).setValue(link);
然后使用
firebaseRef.child(pushId).setValue(null)
删除它。