2016-12-07 14 views
1

私は私のAndroidアプリにFirebaseリアルタイムデータベースとの問題に直面していますOnDataChangeのメソッドをトリガー。私がしようとしています何ValueEventListenerは一度だけ

はリアルタイムでリストを更新することです。しかし、アップデートはアプリの起動時にのみ動作します。自動的には更新されません。だから、更新が必要なときはいつでもアプリを再起動する必要があります。

欠けている部分はありますか?私はどんな助けにも感謝します。おかげ

問題: リスナーが唯一のアプリケーションの再起動でonDataChange方法を引き起こしました。データは正しい。しかし、その後リスナーは動作しません。

コード:

mRef = FirebaseDatabase.getInstance().getReference(); 
mPostRef = mRef.child(DbUtils.POST_CHILD); 
mPostRef.keepSynced(true); 

mPostRef.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     List<Post> objList = new ArrayList<>(); 
     for(DataSnapshot objSnapShot: dataSnapshot.getChildren()){ 
      Post obj = objSnapShot.getValue(Post.class); 
      obj.setKey(objSnapShot.getKey()); 
      objList.add(obj); 
     } 
     mAdapter.addAllAndNotify(objList); 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     Log.i("Posts", "Listener was canceled"); 
    } 
}); 
+1

データが変更されていますか? Firebaseコンソールを使用してデータを変更してみてください。バージョン10.0.1でコードを実行し、データが変更されたときにonDataChange()が起動します。 –

+0

コンソールでデータを変更しました。コードは機能しません。 変更するたびにデータが更新されますか? (私は9.8.0を使用していますが、10.0.1で試してみます)。ご協力いただきありがとうございます。 –

+0

'OnDataChange()'に 'Log'ステートメントを追加して、コールバックがいつ発生するかを確認します。 –

答えて

1

は最後に、私はバグを発見しました。

事実はFirebase は、複数の接続をサポートしていませんです。 したがって、他のすべてのDatabaseReferenceを自分のアクティビティから削除しました。それは今働きます。私を助けようとした

おかげで人々。