1

プロジェクトに fernando cejas のクリーンな Android ボイラープレート コードを使用し、プロジェクトに firebase リアルタイム データベースを実装していますが、コードをデバッグすると、onDataChange() が呼び出されるたびにエミッターがDISPOSEDされていることがわかります (新しい行を追加するとき)。 Firebase データベースに)、UI が新しいリスト コンテンツをレンダリングしていません。これが私のデータ モジュール コードです。何か提案はありますか?

@Override
public Observable<List> signalEntityList() {

Firebase myFirebaseRef = new Firebase("https://mydatabase.firebaseio.com/");

return Observable.create(emitter -> {

  if (isThereInternetConnection()) {

    myFirebaseRef.child("signal").addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot snapshot) {
        List<SignalEntity> list = new ArrayList<>();

        Iterable<DataSnapshot> snapshotIterable = snapshot.getChildren();
        Iterator<DataSnapshot> iterator = snapshotIterable.iterator();

        while (iterator.hasNext()) {
          SignalEntity signalEntity = iterator.next().getValue(SignalEntity.class);
          list.add(signalEntity);
        }

        emitter.onNext(list);
        emitter.onComplete();
      }

      @Override
      public void onCancelled(FirebaseError error) {
        emitter.onError(new FirebaseException(error.getMessage()));
      }
    });
  } else {
    emitter.onError(new NetworkConnectionException());
  }
});
}
4

1 に答える 1