我有一个RealTime数据库,其结构如下:

garage-x23df
    cars
        -LQ0aZ9IP5jCL9Qj5x4D
        -LQ0a_R1Oxh4KazLHVZb
        -LQ0ao2lvhdurSl8qaF1
        -LSsIrK0tziyiJLKfDX1
        ...


我想在不同的活动中操纵这些数据(一个活动显示汽车列表,另一个活动显示特定汽车的数据,另一个活动操纵过滤的汽车列表,等等)。

我应该在每个活动中获取一个新的DataSnapshot还是应该在获取数据后将其存储在本地并将其在活动之间发送(我已经通过从DataSnapshot构建可序列化的ArrayList来实现了这一点,并且我一直在通过意图发送它)。

我大约有400辆汽车,每辆汽车包括大约15个字段(仅字符串和布尔值),但是希望扩展这个数字。

在活动之间发送如此大的ArrayList时,我会担心性能问题,但另一方面,我认为在每个活动中获取DataSnapshot效率不高。

最佳做法是什么?谢谢!

最佳答案

创建一个单独的Java类,无论何时要检索项目,都可以从数据库和所有get方法检索数据。例如,假设您的数据库中有一个名为“ mad”的孩子,其下还有另外三个节点,分别为jack,John和jimmy,每个节点的值都不同,例如jack的字符串值为“ tick”,John的字符串值为“年轻”和“吉米”的价值是“ yipy”。您的课程看起来像这样

   public class Retrieve{
     private String Jack;
     private String Jimmy;
     private String John;
   public Retrieve (String Jack, String Jimmy, String John)
     Jack=jack;
     Jimmy=jimmy;
     John=john;
   public Retrieve(){}
   @PropertyName(“jack”)
   public String getJack(){return Jack;}
   @PropertyName(“jimmy”)
   public String getJimmy(){return Jimmy;}
   @PropertyName(“John”)
   public String getJohn(){return John;}


然后,您可以使用相同的代码样式检索它们并将其设置在应用程序的任何部分。举例来说,假设您要在主要活动中设置从jack到文本视图的值,

   ........
   @Override
   public void onDataChanged(@Nullable DataSnapshot datasnapshot){
   for(DataSnapshot snapshot:dataSnapshot.
   getChildren()){
   if(snapshot!=null){
    Retrieve retrieve =snapshot.getValue(Retrieve.class);
    if(retrieve!=null){
    String no=retrieve.getJack();
    Dast.setText(no)

07-24 09:49
查看更多