【问题标题】:How to prevent redundancy of keys that are in Firebase database when I retrieve them random?当我随机检索 Firebase 数据库中的密钥时,如何防止它们出现冗余?
【发布时间】:2017-01-23 10:25:17
【问题描述】:

这是我随机检索的数据代码:

            mDataSelect.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    List<String> lst = new ArrayList<String>();

                    for (DataSnapshot ds : dataSnapshot.getChildren()) {

                        Collections.shuffle(lst);
                        lst.add(String.valueOf(ds.getKey()));

                        randomGenerator = new Random();
                        int index = randomGenerator.nextInt(lst.size());
                        String item = lst.get(index);
                        idofcaps.setText(item);

                        final DatabaseReference capsSelect = mDataSelect.child(item);

                        capsSelect.addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dss) {

                                String post_Image = (String) dss.child("Image").getValue();
                                Picasso.with(StartCapsActivity.this).load(post_Image).into(caps);
                                String post_name = (String) dss.child("Translation").getValue();
                                translation.setText(post_name);


                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });

                    }}

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }
    });

我的屏幕上有一个下一步按钮,它具有从数据库中检索另一个图像的相同代码。但是,我不想再次检索相同的图像。如何防止这种冗余?

【问题讨论】:

  • 我不知道 Firebase ...但由于它基于 Google BackEnd,我会说它应该具有(不同的)功能。
  • 你能说得更具体点吗?我不明白独特的功能是什么意思。
  • firebaseDB.child("yourchild").Distinct(true)
  • 没有这样的功能。我添加它。没有建议。
  • @TK52 Firebase 数据库中没有 distinct 函数。但是根据定义,键在它们的集合中是唯一的,因此无论如何它在这里都无济于事。如果我正确理解了问题,则 OP 希望已经选择了一个密钥以使其不再符合条件。 ebert rivas 发布的解决方案是实现这一目标的一种方式。

标签: android firebase firebase-realtime-database firebase-storage


【解决方案1】:

创建一个数组列表,然后添加检索到的键。然后删除可能的重复键。 How do I remove repeated elements from ArrayList?

【讨论】:

  • 但我正在一一显示它们,它们都没有相同的键。我尝试了一些答案。它可以防止背靠背显示相同的图像。但是,当我第三次单击下一个按钮时,可以显示第一张图像。我的数据库中有 20 张图像。我想一一展示它们,但没有像其中一些应该优先的优先级。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
相关资源
最近更新 更多