2017-01-22 46 views
0

这是我随机检索数据代码:如何防止随机检索Firebase数据库中密钥的冗余?

  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) { 

       } 
      }); 

     } 
    }); 

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

+0

我不知道Firebase ...但由于它基于Google BackEnd,我会说它应该具有(Distinct)功能。 – MohammedAlSafwan

+0

你能更具体吗?我不明白这是什么意思的独特功能。 –

+0

firebaseDB.child(“yourchild”)。Distinct(true) – MohammedAlSafwan

回答

1

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

+0

但我一个接一个地显示它们,没有一个具有相同的密钥。我尝试了一些答案。它防止重复显示相同的图像。但是,当我第三次单击下一个按钮时,可以显示第一个图像。我在我的数据库中有20个图像。我想逐一展示他们,但没有优先权,像他们中的一些应该是先前的。 –