当我在ValueEventListener
中使用populateViewHolder
时,列表会变空。但是当我不这样做时,这个名单就会被占位符填满。这很奇怪,因为我已经在其他recyclerview中使用了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 */
因此,recyclerview会获取事件的asist列表,并且每个项目都会获得用户的ID。对于每个id,我从Users数据库设置了一个ValueEventListener,在那里我获得了用户信息来填充项目的内容。我这么做很多次,每次都很棒。但我不知道为什么我无法解决这个问题。
这是recyclerView配置:
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);