gpt4 book ai didi

android - 扁平化 Firebase 中的数据以反射(reflect) Android 应用程序中的模型

转载 作者:搜寻专家 更新时间:2023-11-01 07:47:18 25 4
gpt4 key购买 nike

我正在尝试将 Firebase 作为我正在创建的原型(prototype)应用程序的后端。

作为模型,我正在创建一个假游戏。数据非常简单:

  • 共有 3 个所有用户共有的“级别”列表,按难度(简单、中等难度)组织。 (这些在 ViewPager
  • 内的 Fragment
  • 每个级别都包含用户完成后的迷你游戏。
  • 在 Android 应用中,用户会看到该列表,还会看到他/她完成了多少该级别的迷你游戏的计数器。
  • 如果用户点击一个关卡,他/她会看到迷你游戏列表并查看其中哪些已完成。

我目前按如下方式构建我的数据:

levels:{
easy:{
easy-level-1-id:{
total-mini-games:10,
easy-level-1-id:String
}
},
medium:{....},
hard:{.....}
}
user-progress:{
user-id:{
levels:{
easy-level-1-id:{
user-completed:int
}
},
mini-games:{
mini-game-1:true
mini-game-2:true
}
}
}

我必须访问很多地方才能检查游戏是否已经完成,或者每个级别完成了多少游戏。正如文档所建议的那样,所有这些都是为了避免嵌套数据。

是这样做更好,还是将每个可用级别存储在每个用户 ID 下以减少调用次数,但重复数据更多?

我知道 Firebase 团队提供的 FirebaseRecyclerViewAdapter 类,但是因为它需要一个 DatabaseReference 对象作为参数来了解数据的位置,所以它实际上并不在这里应用,因为我在为列表构建模型时从不同的结构中获取数据。

mRef1.child(some_child).addValueEventListener(new ValueEventListener(){

@Override
public void onDataChange(DataSnapshot dataSnapshot){

final Model model = dataSnapshot.getValue(Model.class);
mRef2.child(some_other_child).addValueEventListener(new ValueEventListener(){

@Override
public void onDataChange(DataSnapshot dataSnapshot){

//add more data into the model class
.....
}

@Override
public void onCancelled(DatabaseError databaseError){}


});

@Override
public void onCancelled(DatabaseError databaseError){}

});

关于如何处理更多结构化数据的任何指示?

最佳答案

FirebaseUI 包括对 working with indexed data 的支持.它可以从索引加载链接数据,例如在您的 mini-games 节点中。

在您的示例中可以用作:

keyRef = ref.child("user-progress").child(currentUser.getUid()).child("mini-games");
dataRef = ref.child("mini-games");
adapter = new FirebaseIndexRecyclerAdapter<Chat, MiniGameHolder>(
MiniGame.class,
android.R.layout.two_line_list_item,
MiniGameHolder.class,
keyRef, // The Firebase location containing the list of keys to be found in dataRef.
dataRef) //The Firebase location to watch for data changes. Each key key found at keyRef's location represents a list item in the RecyclerView.

关于android - 扁平化 Firebase 中的数据以反射(reflect) Android 应用程序中的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337890/

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