2017-01-02 61 views
2

我使用FirebaseRecyclerAdapterFragment中填充RecyclerViewRecyclerView不會在首次啓動時使用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文件,設置進度特性

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); 
    }