2017-04-12 17 views
0
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); 

      } 
     } 

感谢您的帮助:)我想从火力地堡用户阵列获取所有用户的UID,并将其存储到ArrayList中

All the unique Id in user array

+2

有什么错误? –

回答

1

您要重新循环内的适配器。不要这样做。

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)是正确的,但你不能扩展你的火力地堡的节点,所以很难说。

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

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) { 
            } 
           }); 
1

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

看: -

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

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