我想從包含“chilidid1,childid2,childid3,...”的串列中洗掉字串“childid1”來自firebase realtime
我想從包含“chilidid1,childid2,childid3,...”的串列中洗掉字串“childid1”來自firebase realtime
uj5u.com熱心網友回復:
我猜你制作的資料庫是為了了解實時資料庫如何在 firebase 上作業。
您的資料庫結構錯誤。你應該重做它并使它像這樣:
-classid1
-children:
-child1: ""
-child2: ""
子鍵中不能有多個值,除非它是一個串列。在這種情況下,您需要創建一個 DatabaseReference 來獲取該值并將其分類到一個串列中,然后您對該串列執行任何您想要的操作,然后將其發布回資料庫。例子:
DatabaseReference childsRef = FirebaseDatabase.getInstance().getReference().child("classes").child("classid1");
childsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
ArrayList[] childrenList =
snapshot.child("children").getValue(List.class);
childrenList[0] = "changedchild1"
snapshot.child("children").setValue(childrenList[0]);
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
}
如果您想以編程方式洗掉子項,只需在我之前放置的代碼上更改它,在 onDataChange 方法中:
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
snapshot.child("children").removeValue();
}
uj5u.com熱心網友回復:
在您的資料庫中呼叫的屬性children實際上是一個字串值。要從中洗掉child1子字串,您必須:
- 將整個
children屬性讀入您的應用程式代碼。 - 修改字串以洗掉 (first)
child1。 - 將修改后的字串寫回資料庫。
或者,您可以按照 OneKe的回答將children屬性轉換為串列(push()用于生成鍵)或映射(其中child1和所有都是鍵,并且它們的值均為true)。
uj5u.com熱心網友回復:
我找到了一個解決方案 thnks ,“Frank van Puffelen”,因為我編碼的想法
就是代碼
delBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//child.removeValue();
final String currentClass;
// Toast.makeText(getContext(), ChildCode, Toast.LENGTH_LONG).show();
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("classes");
currentClass = ClassFragment.classid;
final DatabaseReference db2 = FirebaseDatabase.getInstance().getReference().child("classes").child(currentClass);
final String value= db.child("classes").child(currentClass).child("children").toString();
db2.child("children").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String ids_str = dataSnapshot.getValue().toString();
String str1 = ids_str;
String str2=childid ",";
//String replace = ids_str.replace("str1", "");
// String ret= ids_str.replace(str1,"");
// Toast.makeText(getContext(), ret, Toast.LENGTH_LONG).show();
String returnedString = ids_str.replace( str2, "" );
// Toast.makeText(getContext(), returnedString, Toast.LENGTH_LONG).show();
//Toast.makeText(getContext(), returnedString, Toast.LENGTH_LONG).show();
db2.child("children").setValue(returnedString);
Toast.makeText(getContext(), "Successfully updated user", Toast.LENGTH_SHORT).show();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/454470.html
標籤:爪哇 安卓 火力基地 firebase-实时数据库
