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);
}
}
感谢您的帮助:)
答案 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) {
}
});