RecyclerView在首次启动时不使用FirebaseRecyclerAdapter加载数据

时间:2017-01-02 15:38:47

标签: android firebase firebase-realtime-database firebaseui

我使用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 个答案:

答案 0 :(得分:5)

从代码中删除recyclerView.setHasFixedSize(true),然后检查代码是否正常运行。

对于解雇ProgressBar,最好将可见性设置为GONE

mProgressBar.setVisibility(View.GONE);

有关详细信息,请参阅此Github link。我认为这里报道了同样的问题。

答案 1 :(得分:0)

在您的activity.xml文件中,设置ProgressBar属性

android:visibility="invisible"

并在populateViewHolder方法中设置mProgress.setVisibility(View.GONE); 将数据设置为TextViews&amp; 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);
    }