2017-01-02 14 views
2

Я использую FirebaseRecyclerAdapter для заполнения RecyclerView в Fragment.RecyclerView не загружает данные при первом запуске с использованием FirebaseRecyclerAdapter

Вот мой код

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. Я смущен.

+0

Является ли сегмент кода 'onCreateView'? –

ответ

4

Удалить из recyclerView.setHasFixedSize(true) ваш код, а затем проверьте, работает ли код сейчас.

И для отклонения ProgressBar, его полезно установить видимость на GONE.

mProgressBar.setVisibility(View.GONE); 

Для получения дополнительной информации вы можете найти это Github link. Я думаю, что об этой же проблеме сообщается здесь.

+0

Спасибо! Это сводило меня с ума! :) – Mufad

+0

Рад узнать, что помогло! –

0

В файле 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); 
    }