2017-01-02 35 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); 
    } 
相关问题