¿Cómo solicitar datos de la base de datos de firebase de nuevo?
Tengo una aplicación con un diseño de swipe-to-refresh .
Cuando se desplaza hacia arriba en un diseño de Desplazamiento para actualizar, los datos se actualizan desde Internet. (para los que no lo saben)
- SwipeRefreshLayout detrás de ActionBar
- Cómo utilizar PullToRefresh en StaggeredGridView?
- SwipeRefreshLayout: Desplazar la animación de progreso
- No se puede desplazar en un ListView en un swipeRefreshLayout
- Cómo añadir una sugerencia de texto a Android SwipeRefreshLayout
Mi fuente de datos es Firebase.
En mi aplicación si el usuario no está conectado, a continuación, muestra un mensaje de error de red, después de que el Internet está encendido no recibe los datos.
¿Cómo puedo obtener datos de nuevo desde 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(); } } ); }
- SwipeRefreshLayout desactivar la animación de arrastre en el dedo hacia abajo
- SwipeRefreshLayout - desliza el dedo hacia abajo para actualizar pero no mueve la vista hacia abajo
- SwipeRefreshLayout con múltiples ListViews
- Cuando el fragmento de interruptor con SwipeRefreshLayout durante la actualización, el fragmento se congela pero en realidad todavía funciona
- SwipeRefreshLayout setRefreshing () no muestra el indicador inicialmente
- SwipeRefreshLayout de la lib de soporte. V21 no funciona con contenido estático
- SwipeRefreshLayout cargador no sube cuando tire hacia abajo de Android
- SwipeRefreshLayout detecta un evento de desplaza hacia abajo antes de iniciar onRefresh ()
Cuando se utiliza firebase base de datos en tiempo real, no hay necesidad de hacer la solicitud de nuevo. Una vez que los datos cambien, automáticamente buscará los datos para usted y uno de sus oyentes va a ser llamado.
Su evento onChildChanged () se disparará cada vez que se modifique un nodo secundario de news
, incluyendo cualquier modificación a los descendientes del nodo secundario.
Para habilitar las 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 ¿cómo solicitar datos de nuevo ?!
Sólo tiene que conectar a los oyentes una vez más.
Pero recuerde separar los oyentes antiguos 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); } });