gpt4 book ai didi

android - 如何从包含子名称的 firebase 数据库中检索字符串列表?

转载 作者:行者123 更新时间:2023-11-29 23:28:11 28 4
gpt4 key购买 nike

我正在使用 Kotlin 开发应用程序并且已经设置了我的 Firebase 数据库。我能够将数据写入我的数据库,但是,我无法从中读取数据。这是我的数据库的图像:

Database Image

我想检索 BasicsFunctionsLoops 中所有标题的列表。有关更多上下文,这是一个教人们如何使用 Kotlin 编写代码的应用程序,在进度选项卡下,我基本上列出了用户在我的应用程序中完成的所有主题。那么,我如何查询我的数据库以检索在 say Basics 下列出的所有标题的列表?我希望最好突出一个包含字符串 ConditionDatatype 的字符串列表。我只需要他们为该特定部分完成的主题的名称(在本例中是 Basics)。所以基本上,我需要 BasicsFunctionsLoops 的子名称。

我的进步类(class):

package nus.is3261.kotlinapp
import com.google.firebase.database.IgnoreExtraProperties

@IgnoreExtraProperties
class Progress {
var completed: String? = null

constructor() {
// Default constructor required for calls to DataSnapshot.getValue(Post.class)
}

constructor(time: String) {
this.completed = time
}

}

我如何将数据写入我的数据库:

/**
* For firebase database
*/
private fun submitProgress(str: String, chapter: Int) {
val currentUser = mAuth!!.currentUser
// if user is not logged in, don't write
currentUser?:return
val time = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().time)
val progress = Progress(time)
when(chapter){
1 -> mProgressReference!!.child(currentUser.uid!!).child("Progress").child("Basics").child(str).setValue(progress)
2 -> mProgressReference!!.child(currentUser.uid!!).child("Progress").child("Loops").child(str).setValue(progress)
3 -> mProgressReference!!.child(currentUser.uid!!).child("Progress").child("Functions").child(str).setValue(progress)
}
}

最佳答案

根据您的意见,要显示BasicsFunctionsLoops 下的子项,请使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference progressRef = rootRef.child("Users").child(uid).child("Progress");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
for(DataSnapshot ds : dSnapshot.getChildren()) {
String key = ds.getKey();
Log.d(TAG, key);
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
progressRef.addListenerForSingleValueEvent(valueEventListener);

您的 logcat 中的结果将是:

Condition
Data Type
Recursion
When
While

关于android - 如何从包含子名称的 firebase 数据库中检索字符串列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53138385/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com