2

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) {

    }
});

私は何か間違ったことをしていますか?修正は何ですか?

4

1 に答える 1

4

問題が見つかりました。フラグメントを呼び出していmAdapter.cleanup();ました。onStop()それを削除すると、問題が修正されました。

クリーンアップを行う代わりに、onStop();それを呼び出す必要がありますonDestroy()

フランクが提案したように:

cleanup()一般に、アダプターを作成した場所から「逆」のメソッドを呼び出す必要があります。だからonCreate()<-> onDestroy()onStart()<-> onStop()onPause()<->onResume()

于 2016-02-10T08:29:12.963 に答える