2017-06-22 5 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) { 

        } 
       }); 

で繰り返してきた。しかし、これは、それがランダムに反復し、ここで私はそれがリストを反復処理する必要がある問題

、繰り返さないでくださいされない重要なコード です表示されるオブジェクト

例を設定します: ボタンを押すとコードが機能し、アイテムのリスト全体、画面上のランダムな項目が表示されますが、再度クリックすると以前と同じように表示されることがあります。そのオブジェクトを表示する必要はありませんそれはすでに、あなたのOnDataChange店内Map<String, Boolean>のようなデータ構造での子供のキーを

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

を示しました。あなたのコードでは、あなただけの新しい地図を初期化する必要がありmyMapと呼ばれ、あなたのforループ内で次の行を追加します。

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

次に、あなたのキーのmyMapの値がまだであれば、あなたの「ランダム方式」内だけでチェックtrue 。そして、そのキーで要素を使用したら、ブール値をfalseに設定します。

+0

私はそれをどのように実装するのか非常によく分かりませんが、あなたが私をうまく説明するのに大いに役立つでしょう –

関連する問題