FirebaseRecyclerAdapter 不会自动更新数据



我正在使用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) {
    }
});

我做错了什么吗?修复是什么?

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

与其在onStop();中进行清理,不如在onDestroy()

正如弗兰克所建议的:

通常,您应该在创建适配器的"相反"方法中调用cleanup()。所以onCreate() <-> onDestroy()onStart() <-> onStop()onPause() <-> onResume()

相关内容

  • 没有找到相关文章

最新更新