query leer guardar from example datos datasnapshot data consultas java android firebase firebase-database swiperefreshlayout

java - guardar - leer datos firebase android



¿Cómo volver a solicitar datos de la base de datos de firebase? (2)

Tengo una aplicación con un diseño Deslizar para actualizar .

Cuando se desplaza hacia arriba en un diseño Deslizar para actualizar, los datos se actualizan desde Internet. (para aquellos que no saben)

Mi fuente de datos es Firebase.

En mi aplicación, si el usuario no está conectado, muestra un mensaje de error de red, luego de que se enciende Internet no obtiene los datos.

¿Cómo vuelvo a obtener datos de mi base de datos?

Aquí está el código:

protected void onCreate(Bundle savedInstanceState) { ... mFirebaseDatabase = FirebaseDatabase.getInstance(); // my database mNewsDatabaseReference = LoginActivity.mFirebaseDatabase.getReference() .child("data").child("news"); // my database reference // my ChildEventListener mNewsChildEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { // my data News news = dataSnapshot.getValue(News.class); // add the news to the top of my ArrayAdapter myAdapter.insert(news, 0); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) {} @Override public void onChildRemoved(DataSnapshot dataSnapshot) {} @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) {} @Override public void onCancelled(DatabaseError databaseError) {} }; // my OnRefreshListener mySwipeRefreshLayout.setOnRefreshListener( new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { // what Should I do in here to request the data again?! // I know that I should empty my adapter first then request the data myAdapter.clear(); } } ); }


Al usar la base de datos en tiempo real de firebase, no hay necesidad de hacer la solicitud nuevamente. Una vez que los datos cambien, automáticamente buscará los datos por usted y uno de sus oyentes será llamado.

Su evento onChildChanged () se disparará cada vez que se modifique un nodo secundario de news , incluidas las modificaciones a los descendientes del nodo secundario.

Para habilitar Capacidades fuera de línea, no olvide usar setPersistenceEnabled(true)

Consulte la documentación para obtener más información


La respuesta anterior es muy útil, pero ¿para la pregunta de cómo solicitar datos otra vez?

Simplemente necesita adjuntar a los oyentes una vez más.

Pero recuerde desconectar a los oyentes viejos primero para que los datos no aparezcan dos veces en el adaptador.

Aquí está el código:

mNewsSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { myAdapter.clear(); mNewsDatabaseReference.removeEventListener(mNewsChildEventListener); mNewsDatabaseReference.addChildEventListener(mNewsChildEventListener); } });