大家!我想使用 RecyclerView 从 Firebase数据库中删除该值。 但是,我找不到要删除的孩子的键。
首先,我将数据添加到数据库中,如下所示:
String key = MainActivity.databaseReference.push().getKey();
MainActivity.databaseReference.child(key).setValue(myAppModel);
在删除方面,在我的 RecyclerView 适配器中,我已将 onClickListener 写入 ImageView 并成功从列表中删除了项目! 此外,我还尝试了多种方法来从数据库中删除该项目,但是数据仍然没有改变。 这是代码:
holder.appDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAppModelList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, mAppModelList.size());
final ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
dataSnapshot.getValue(AppModel.class);
MainActivity.databaseReference.child(mAuth.getUid()).child(dataSnapshot.getRef().getKey()).removeValue();
System.out.println(dataSnapshot.getRef().getKey()); // it gives me user id...but in my MainActivity it gives the real key
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
MainActivity.databaseReference.addListenerForSingleValueEvent(eventListener);
}
});
正如我在代码注释中提到的, getRef()。getKey()给了我Firebase用户ID,例如 mAuth.getUid() 在 MainActivity 中,我收到了孩子的真实姓名(密钥)
Query query = databaseReference;
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
AppModel appModel = dataSnapshot.getValue(AppModel.class);
appModelResult.add(0, appModel);
AddAppDialog.setAppModelResult(appModelResult);
System.out.println(dataSnapshot.getRef().getKey());
reloadFragment(fragment);
}
我应该怎么做才能从数据库中删除数据? 提前谢谢大家!
答案 0 :(得分:0)
解决了! 最初,当我要删除项目时,我写了
MainActivity.databaseReference.child(mAuth.getUid()).child(appModel.getAppId()).removeValue();
但是,正如我注意到的那样,您不应输入用户ID
MainActivity.databaseReference.child(appModel.getAppId()).removeValue();
我们来了! 希望对大家有帮助