RecyclerView не загружает данные при первом запуске с использованием FirebaseRecyclerAdapter
Я использую FirebaseRecyclerAdapter
заселить RecyclerView
в Fragment
,
Вот мой код
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
населён. Я не совсем понимаю.
2 ответа
Удалить recyclerView.setHasFixedSize(true)
из вашего кода, а затем проверьте, работает ли код сейчас нормально.
И за увольнение ProgressBar
, хорошо, чтобы установить видимость GONE
,
mProgressBar.setVisibility(View.GONE);
Для получения дополнительной информации вы можете увидеть эту ссылку Github. Я думаю, что та же самая проблема сообщена здесь.
В вашем файле 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);
}