【发布时间】: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