Я пытаюсь просмотреть данные из firebase в RecyclerView, но ничего не отображается, и массив данных оказывается пустым вне функции onDataChange
public class UsersView extends Fragment {
FirebaseDatabase mFirebaseDatabase;
DatabaseReference myRef;
static final String TAG = "9469849848347903847";
ArrayList mUsers;
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.users_view,
container, false);
mFirebaseDatabase = FirebaseDatabase.getInstance();
myRef = mFirebaseDatabase.getReference("Users");
mRecyclerView = rootView.findViewById(R.id.recyclerView);
mRecyclerView.hasFixedSize();
mLayoutManager = new LinearLayoutManager(getActivity());
mUsers = new ArrayList();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
Log.e("Count ", "" + snapshot.getChildrenCount());
for (DataSnapshot postSnapshot :
snapshot.getChildren()) {
User user = postSnapshot.getValue(User.class);
mUsers.add(user);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "failed");
}
});
Log.i(TAG,String.valueOf(mUsers.isEmpty()));
mAdapter = new ExampleAdapter(mUsers);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
return rootView;
}
}
, но когда я переместил этот код в onDataChange, все работало нормально:
mAdapter = new ExampleAdapter(mUsers);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);