RecyclerView 不会在使用 FirebaseRecyclerAdapter 首次启动时加载数据
RecyclerView doesn't load data in first launch using FirebaseRecyclerAdapter
我正在使用 FirebaseRecyclerAdapter
在 Fragment
中填充 RecyclerView
。
这是我的代码
mDatabase = FirebaseDatabase.getInstance().getReference();
myAdapter = new FirebaseRecyclerAdapter<Product, ProductViewHolder>(Product.class,
R.layout.product_item,ProductViewHolder.class,
mDatabase.child("clothes")) {
@Override
protected void populateViewHolder(ProductViewHolder viewHolder, Product model, int position) {
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
viewHolder.name.setText(model.name);
viewHolder.price.setText(model.price);
Glide.with(getActivity()).load(model.imageUri).into(viewHolder.thumbnail);
Log.d("NAME", model.name);
}
};
recyclerView.setAdapter(myAdapter);
问题是,ProgressBar
在第一次启动时一直在移动,它从不隐藏,RecyclerView
也从不显示自己,但是如果我退出应用程序并再次启动,RecyclerView
已正确填充,即使屏幕自行锁定并且我将其解锁,RecyclerView
也会被填充。我很困惑。
在您的 activity.xml 文件中,设置 ProgressBar 属性
android:visibility="invisible"
并在您的 populateViewHolder 方法中设置 mProgress.setVisibility(View.GONE);
将数据设置为 TextViews 和 ImageView
之后
protected void populateViewHolder(ProductViewHolder viewHolder, Product model, int position) {
viewHolder.name.setText(model.name);
viewHolder.price.setText(model.price);
Glide.with(getActivity()).load(model.imageUri).into(viewHolder.thumbnail);
mProgress.setVisibility(View.GONE);
Log.d("NAME", model.name);
}
从您的代码中删除 recyclerView.setHasFixedSize(true)
,然后检查代码现在是否可以正常工作。
为了消除 ProgressBar
,最好将可见性设置为 GONE
。
mProgressBar.setVisibility(View.GONE);
有关详细信息,请参阅此 Github link。我认为这里报告了同样的问题。
我正在使用 FirebaseRecyclerAdapter
在 Fragment
中填充 RecyclerView
。
这是我的代码
mDatabase = FirebaseDatabase.getInstance().getReference();
myAdapter = new FirebaseRecyclerAdapter<Product, ProductViewHolder>(Product.class,
R.layout.product_item,ProductViewHolder.class,
mDatabase.child("clothes")) {
@Override
protected void populateViewHolder(ProductViewHolder viewHolder, Product model, int position) {
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
viewHolder.name.setText(model.name);
viewHolder.price.setText(model.price);
Glide.with(getActivity()).load(model.imageUri).into(viewHolder.thumbnail);
Log.d("NAME", model.name);
}
};
recyclerView.setAdapter(myAdapter);
问题是,ProgressBar
在第一次启动时一直在移动,它从不隐藏,RecyclerView
也从不显示自己,但是如果我退出应用程序并再次启动,RecyclerView
已正确填充,即使屏幕自行锁定并且我将其解锁,RecyclerView
也会被填充。我很困惑。
在您的 activity.xml 文件中,设置 ProgressBar 属性
android:visibility="invisible"
并在您的 populateViewHolder 方法中设置 mProgress.setVisibility(View.GONE);
将数据设置为 TextViews 和 ImageView
protected void populateViewHolder(ProductViewHolder viewHolder, Product model, int position) {
viewHolder.name.setText(model.name);
viewHolder.price.setText(model.price);
Glide.with(getActivity()).load(model.imageUri).into(viewHolder.thumbnail);
mProgress.setVisibility(View.GONE);
Log.d("NAME", model.name);
}
从您的代码中删除 recyclerView.setHasFixedSize(true)
,然后检查代码现在是否可以正常工作。
为了消除 ProgressBar
,最好将可见性设置为 GONE
。
mProgressBar.setVisibility(View.GONE);
有关详细信息,请参阅此 Github link。我认为这里报告了同样的问题。