2017-06-22 27 views
0

我正在遍歷firebase中的列表,它的工作原理與arrayList類似 我使用for循環遍歷chlidrens,因爲它將在列表中完成,我讓他們隨意使用此代碼如何跳過已經在arrayList中傳遞的項目

FirebaseUtils.getMeetPeopleListCityReference(ciudadX).orderByKey().addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(final DataSnapshot dataSnapshot) { 
         if (dataSnapshot != null) { 
          Random random = new Random(); 
          final int index = random.nextInt((int) dataSnapshot.getChildrenCount()); 
          int count = 0; 
          for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
           if (count == index) { 
            final MeetPeopleList mee = snapshot.getValue(MeetPeopleList.class); 

            if (mee.getIDentificador().equals(firebaseUser.getUid())) { 
             // nothing, are you 
            } else { 
             testData.add(mee); 
             adapter.notifyDataSetChanged(); 
             return; 
            } 
           } 
           count++; 
          } 
         } 
        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) { 

        } 
       }); 

迭代但是,這是重要的代碼 它所做的是迭代的隨機的,問題就在這裏

我需要它在列表遍歷,不重複將列出的物品

我會設置一個例子: 代碼的工作方式是按下一個按鈕,按下它顯示整個項目列表,一個隨機項目在屏幕上,但有時再次點擊顯示與先前顯示的相同,我不需要顯示該對象這已經表明

Random random = new Random(); 
          final int index = random.nextInt((int) dataSnapshot.getChildrenCount()); 
          int count = 0; 
          for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
           if (count == index) { 
            final MeetPeopleList mee = snapshot.getValue(MeetPeopleList.class); 

            if (mee.getIDentificador().equals(firebaseUser.getUid())) { 
             // nothing, are you 
            } else { 
             testData.add(mee); 
             adapter.notifyDataSetChanged(); 
             return; 
            } 
           } 
           count++; 
          } 

回答

1

裏面你OnDataChange店像Map<String, Boolean>的數據結構的孩子也鑰匙。在你的代碼你剛纔初始化一個名爲myMap新的地圖和裏面添加這一行的for循環:

myMap.put(snapshot.getKey(), true) 

那麼,你的「隨機法」中只檢查如果你的關鍵的myMap值仍然true 。然後將布爾值設置爲false,然後將該元素與該鍵一起使用。

+0

我不太明白如何實施它,這對你解釋得很好很有幫助 –

相關問題