Я использую FirebaseRecyclerAdapter, который поставляется с библиотекой FirebaseAndroid-UI, и я предполагаю, что когда данные будут изменены на Firebase, он автоматически обновит и обновит RecyclerView.FirebaseRecyclerAdapter автоматически обновляет данные
Мой код прост:
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);
}
};
Я также попытался вручную обновить адаптер с помощью notifyDatasetChanged в методе OnDataChange:
firebasePicturesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (mAdapter != null)
mAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
я делаю что-то не так? Что такое исправление?
Вы можете поставить точку останова в 'populateViewHolder()' и увидеть, что если сработал? –
Нашли ошибку. Я вызывал 'mAdapter.cleanup();' in onStop of Fragment. Удалите, что он работает нормально. Я думаю, что я должен сделать очистку в методе 'onDestroy'? –
Хорошо, что вы вызываете 'cleanup()'! В общем случае вы должны вызывать 'cleanup()' в методе «напротив», из которого вы создаете адаптер. Поэтому 'onCreate()' <-> 'onDestroy()', 'onStart()' <-> 'onStop()', 'onPause()' <-> 'onResume()'. –