когда я использую ValueEventListener
внутри populateViewHolder
, список становится пустым. Но когда я не делаю, список заполняется заполнителем. Это странно, потому что я уже использовал этот EventListener
в другом обзоре переработчиков и работает нормально. Но я не знаю, что здесь происходит.
Причина, по которой я должен использовать его, заключается в том, что в моей базе данных есть что-то вроде этого:
-> root
---> Events
------> -L9TDlh9MukU9vuHUAv-
----------> asist
--------------> Users ids that go to this event
----------> /* Other event stuff */
------> -LA3OyftXo2nSKMzhVCu
----------> asist
--------------> Users ids that go to this event
----------> /* Other event stuff */
---> Users
------> JrB6orsAs0PP7SHLKfiC9hEE9ax1
---------> /* User stuff */
------> MfFyQ2GbDbRr61I8j4QtQn7XoIj1
---------> /* User stuff */
Так что просмотрщик-получатель получает список по списку событий, и для каждого элемента я получаю идентификаторы пользователя. С каждым идентификатором я устанавливаю ValueEventListener из базы данных Users, и там я получаю информацию о пользователе для заполнения элемента. Я делаю это много раз, и каждый раз отлично работает. Но я не знаю, почему я не могу это исправить.
Вот конфиг реселлера:
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
Вот адаптер:
userDatabase = FirebaseDatabase.getInstance().getReference().child("Events").child("-L9TDlh9MukU9vuHUAv-").child("asist");
adapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(
Users.class,
R.layout.users_row_layout,
UsersViewHolder.class,
userDatabase
) {
@Override
protected void populateViewHolder(final UsersViewHolder viewHolder, Users model, final int position) {
mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
mDatabase.child(getRef(position).getKey().toString()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
};
recyclerView.setAdapter(adapter);