我想从Firebase用户阵列中检索所有用户的UID并将其存储到Arraylist中

时间:2017-04-12 15:42:23

标签: java android firebase firebase-realtime-database

    databaseReference.child("user").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

           for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                String requests = postSnapshot.getValue(String.class);
                req.add(requests);
                adapter = new ChallengeSuggestionAdapter(getActivity(), req);
                recyclerView.setAdapter(adapter);

            }
        }

感谢您的帮助:)

All the unique Id in user array

3 个答案:

答案 0 :(得分:2)

您正在循环中重新创建适配器。不要这样做。

final List<String> req = new ArrayList<>();
final ChallengeSuggestionAdapter adapter = new ChallengeSuggestionAdapter(getActivity(), req);
recyclerView.setAdapter(adapter);

databaseReference.child("user").addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
       req.clear();
       for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
            String requests = postSnapshot.getValue(String.class);
            req.add(requests);
        }
        recyclerView.notifyDataSetChanged();
    }
});

此外,我不认为getValue(String.class)是正确的,但您还没有扩展您的Firebase节点,这很难说。

如果你想要那个UUID,你可以使用req.add(postSnapshot.getKey())

答案 1 :(得分:1)

创建GenericTypeIndicator以从DataSnapshot.getValue()参数传递值。

看: -

GenericTypeIndicator<List<String>> typeIndicator = new GenericTypeIndicator<List<String>>() {};

List<String> stringArrary = dataSnapshot.getValue(typeIndicator );

答案 2 :(得分:0)

Please Use getKey if you want the uid and take your recyclerview adapter from the loop. try using addValueEventListener


    databaseReference.child("user").addValueEventListener(new ValueEventListener() {
         @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
                req.clear();
        for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
            String requests = postSnapshot.getKeyString.class);
            req.add(requests);
        }
       adapter = new ChallengeSuggestionAdapter(getActivity(), req);
                recyclerView.setAdapter(adapter);
            }

         @Override
         public void onCancelled(DatabaseError databaseError) {
                                    }
                                });
相关问题