Android Firebase childs到阵列(Kotlin)
早上好 今天我的项目是与Kotlin firebase合作。刚刚发现一个问题,我似乎找不到任何关于如何将所有子对象存储在一个数组中的好文档,然后我就可以执行“for”循环了。试试这个Android Firebase childs到阵列(Kotlin),android,firebase,kotlin,Android,Firebase,Kotlin,早上好 今天我的项目是与Kotlin firebase合作。刚刚发现一个问题,我似乎找不到任何关于如何将所有子对象存储在一个数组中的好文档,然后我就可以执行“for”循环了。试试这个 var firebaseDatabase: FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance(); progressBar.visibility = ProgressBar.VISIB
var firebaseDatabase: FirebaseDatabase
firebaseDatabase = FirebaseDatabase.getInstance();
progressBar.visibility = ProgressBar.VISIBLE
firebaseDatabase.getReference("players").addValueEventListener(object: ValueEventListener {
override fun onDataChange(p0: DataSnapshot?) {
Log.d("DAta",p0.toString())
progressBar.visibility = ProgressBar.GONE
if(p0!!.exists()){
for (h in p0.children){
val player = h.getValue(Player::class.java)
photosList.add(player)
adapter.notifyDataSetChanged()
Log.d("Data","player is "+player.toString())
}
}
}
override fun onCancelled(p0: DatabaseError?) {
Toast.makeText(activity,"Fail to Load Data", Toast.LENGTH_SHORT).show()
}
});
试试这个
var firebaseDatabase: FirebaseDatabase
firebaseDatabase = FirebaseDatabase.getInstance();
progressBar.visibility = ProgressBar.VISIBLE
firebaseDatabase.getReference("players").addValueEventListener(object: ValueEventListener {
override fun onDataChange(p0: DataSnapshot?) {
Log.d("DAta",p0.toString())
progressBar.visibility = ProgressBar.GONE
if(p0!!.exists()){
for (h in p0.children){
val player = h.getValue(Player::class.java)
photosList.add(player)
adapter.notifyDataSetChanged()
Log.d("Data","player is "+player.toString())
}
}
}
override fun onCancelled(p0: DatabaseError?) {
Toast.makeText(activity,"Fail to Load Data", Toast.LENGTH_SHORT).show()
}
});
你可以试试这个图书馆
@FirebaseRepository(dataSnapshotType=MyModel.class,
坚持=正确,
isAccessPrivate=true,
children={PlanEventRepository.USERS\u CHILD,FirebaseRepository.USER\u ID,PlanEventRepository.PLAN\u EVENTS\u CHILD})
公共类MyRepo扩展了FirebaseListRepository{
静态最终字符串USERS\u CHILD=“USERS”;
静态最终字符串计划\u事件\u CHILD=“事件”;
受保护的MyRepo(配置){
超级(配置);
}
}
您可以通过以下方式访问您的列表:
//MyRepoBuilder is a generated class by annotation processor and can be accedes only after a successful gradle build.
MyRepoBuilder.getInstance().subscribeToList(new SubscriberRespiration<List<MyModel>>() {
@Override
public void onSuccess(List<MyModel> dataSnapShot) {
//here is your list =)
}
});
//MyRepoBuilder是由注释处理器生成的类,只有在成功构建gradle后才能加入。
MyRepoBuilder.getInstance().subscribeToList(新SubscriberRespiration()){
@凌驾
成功时的公共void(列表dataSnapShot){
//这是您的列表=)
}
});
Kotlin注释处理尚不受支持,因此您必须在自定义存储库中使用java。您可以尝试使用此库
@FirebaseRepository(dataSnapshotType=MyModel.class,
坚持=正确,
isAccessPrivate=true,
children={PlanEventRepository.USERS\u CHILD,FirebaseRepository.USER\u ID,PlanEventRepository.PLAN\u EVENTS\u CHILD})
公共类MyRepo扩展了FirebaseListRepository{
静态最终字符串USERS\u CHILD=“USERS”;
静态最终字符串计划\u事件\u CHILD=“事件”;
受保护的MyRepo(配置){
超级(配置);
}
}
您可以通过以下方式访问您的列表:
//MyRepoBuilder is a generated class by annotation processor and can be accedes only after a successful gradle build.
MyRepoBuilder.getInstance().subscribeToList(new SubscriberRespiration<List<MyModel>>() {
@Override
public void onSuccess(List<MyModel> dataSnapShot) {
//here is your list =)
}
});
//MyRepoBuilder是由注释处理器生成的类,只有在成功构建gradle后才能加入。
MyRepoBuilder.getInstance().subscribeToList(新SubscriberRespiration()){
@凌驾
成功时的公共void(列表dataSnapShot){
//这是您的列表=)
}
});
Kotlin注释处理尚不受支持,因此您必须在自定义存储库上使用java。您只想循环一个DataSnapShot的所有子项? 如果是这样,一个可变列表应该可以工作。 你可以试试这样的
databaseReference.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
elements = dataSnapshot.children.toMutableList()
for (element in elements) {
//your logic
}
}
override fun onCancelled(databaseError: DatabaseError) {}
})
您只想循环遍历DataSnapShot的所有子项? 如果是这样,一个可变列表应该可以工作。 你可以试试这样的
databaseReference.addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
elements = dataSnapshot.children.toMutableList()
for (element in elements) {
//your logic
}
}
override fun onCancelled(databaseError: DatabaseError) {}
})
Firebase有两种存储选项,但不清楚使用哪一种。在我们的项目中,我们使用FirebaseFirestore,保存和检索数组/列表数据非常简单。将对象另存为列表,只需使用toObject即可。下面的示例查询数据库的所有内容
val allEntities = mutableListOf<YourEntityClass>()
val fireStore = FirebaseFirestore.getInstance()
val ref = fireStore.collection("yourcollection")
ref.get().addOnSuccessListener { documents ->
documents.forEach {
it.toObject(YourEntityClass::class.java).let { entity ->
allEntities.addOrReplace(entity)
}
}
}
val allenties=mutableListOf()
val fireStore=FirebaseFirestore.getInstance()
val ref=fireStore.collection(“yourcollection”)
ref.get().addOnSuccessListener{documents->
文件。forEach{
toObject(YourEntityClass::class.java).let{entity->
Allenties.添加或替换(实体)
}
}
}
Firebase有两种存储选项,但不清楚使用哪一种。在我们的项目中,我们使用FirebaseFirestore,保存和检索数组/列表数据非常简单。将对象另存为列表,只需使用toObject即可。下面的示例查询数据库的所有内容
val allEntities = mutableListOf<YourEntityClass>()
val fireStore = FirebaseFirestore.getInstance()
val ref = fireStore.collection("yourcollection")
ref.get().addOnSuccessListener { documents ->
documents.forEach {
it.toObject(YourEntityClass::class.java).let { entity ->
allEntities.addOrReplace(entity)
}
}
}
val allenties=mutableListOf()
val fireStore=FirebaseFirestore.getInstance()
val ref=fireStore.collection(“yourcollection”)
ref.get().addOnSuccessListener{documents->
文件。forEach{
toObject(YourEntityClass::class.java).let{entity->
Allenties.添加或替换(实体)
}
}
}
您试过什么了吗?你能做什么?你在哪里卡住了?找不到Kotlin的文档,你能找到Java的文档吗?你试过什么了吗?你能做什么?你在哪里卡住了?找不到Kotlin的文档,你能找到Java的文档吗?