我的RecyclerView
有问题。总之,我将RecyclerView
连接到我的数据库。然后,当我开始活动时,列表为空,但如果我返回到上一个活动并重新打开此活动,则列表将被填充。
以下是代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_followers);
mAuth = FirebaseAuth.getInstance();
if(mAuth == null){
startActivity(new Intent(FollowersActivity.this, HomeScreenActivity.class));
finishAffinity();
}
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Seguidores");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDatabase = FirebaseDatabase.getInstance().getReference().child("Usuarios");
requestDB = FirebaseDatabase.getInstance().getReference().child("requesting");
requestList = findViewById(R.id.requestList);
requestList.setHasFixedSize(true);
requestList.setLayoutManager(new LinearLayoutManager(this));
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Users, requestViewHolder> requestAdapter = new FirebaseRecyclerAdapter<Users, requestViewHolder>(
Users.class,
R.layout.users_row_layout,
requestViewHolder.class,
requestDB.child(mAuth.getCurrentUser().getUid())
) {
@Override
protected void populateViewHolder(final requestViewHolder viewHolder, Users model, int position) {
final String other_userId = getRef(position).getKey();
mDatabase.child(other_userId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("nombre").getValue().toString();
String username = dataSnapshot.child("usuario").getValue().toString().substring(1);
String fotoPath = dataSnapshot.child("foto").getValue().toString();
viewHolder.nameTextView.setText(name);
viewHolder.usernameTextView.setText(username);
Glide.with(getApplicationContext()).load(fotoPath).into(viewHolder.imageView);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
};
requestList.setAdapter(requestAdapter);
}
public static class requestViewHolder extends RecyclerView.ViewHolder {
View mView;
CircleImageView imageView;
TextView nameTextView, usernameTextView;
public requestViewHolder (View itemView){
super(itemView);
mView = itemView;
imageView = itemView.findViewById(R.id.circleImageView);
nameTextView = itemView.findViewById(R.id.nameTextView);
usernameTextView = itemView.findViewById(R.id.usernameTextView);
}
}
然后我意识到问题出在数据库上,因为如果我更改了根目录,那么列表就会在第一时间填充。
答案 0 :(得分:0)
您需要从代码中删除requestList.setHasFixedSize(true);
。
如果您的setHasFixedSize
项目在运行时不会改变其高度,您可以考虑使用RecyclerView
。它有一些额外的好处,如优化视图的整个回收。但是,您无法使用它来加载动态RecyclerView
。
有关更好的理解,请参阅documentation here。