【问题标题】:FirebaseRecyclerAdapter not updating data automaticallyFirebaseRecyclerAdapter 不会自动更新数据
【发布时间】:2016-01-27 19:48:14
【问题描述】:

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

    }
});

我做错了吗?解决方法是什么?

【问题讨论】:

  • 你可以在populateViewHolder() 中设置一个断点,看看它是否被触发?
  • 发现问题。我在片段的 onStop 中调用了mAdapter.cleanup();。删除它工作正常。我想我应该在onDestroy 方法中进行清理?
  • 很高兴你打电话给cleanup()!一般来说,您应该在创建适配器的“相反”方法中调用cleanup()。所以onCreate()onDestroy()onStart()onStop()onPause()onResume()
  • 将您的解决方案作为答案

标签: android firebase firebase-realtime-database firebaseui


【解决方案1】:

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

应该在onDestroy() 中调用它而不是在onStop(); 中进行清理

按照弗兰克的建议:

一般而言,您应该在创建适配器的“相反”方法中调用cleanup()。所以onCreate()onDestroy()onStart()onStop()onPause()onResume()

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2016-11-28
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2017-05-30
    相关资源
    最近更新 更多