FirebaseRecyclerAdapter不会自动更新数据

时间:2016-01-27 19:48:15

标签: android firebase firebase-realtime-database firebaseui

我正在使用FirebaseAndroid-UI库附带的FirebaseRecyclerAdapter,我假设当Firebase上的数据发生变化时,它会自动刷新并更新RecyclerView。

我的代码很简单:

Firebase firebasePicturesRef = new Firebase(FIREBASE_URL);

mAdapter = new FirebaseRecyclerAdapter<Image, ImageViewHolder>(
        Image.class, R.layout.pictures_grid_item,
        ImageViewHolder.class, firebasePicturesRef) {

    @Override
    protected void populateViewHolder(ImageViewHolder viewHolder, Image model, int position) {
        super.populateViewHolder(viewHolder, model, position);
        Glide.with(getActivity()).load(model.getThumbnailUrl()).into(viewHolder.mImageView);
    }
};

我还尝试使用 onDataChange 方法中的 notifyDatasetChanged 手动刷新适配器:

firebasePicturesRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (mAdapter != null)
            mAdapter.notifyDataSetChanged();
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});

我做错了吗?有什么问题?

1 个答案:

答案 0 :(得分:4)

我发现了问题,我在片段的mAdapter.cleanup();中调用了onStop()。删除它解决了问题。

不应在onStop();中进行清理,而应在onDestroy()

中调用

正如弗兰克所说:

通常,您应该在创建适配器的“相反”方法中调用cleanup()。所以onCreate()&lt; - &gt; onDestroy()onStart()&lt; - &gt; onStop()onPause()&lt; - &gt; onResume()