How to request data from firebase database again?

I have a Swipe-To-Refresh layout app .

When you look at the Swipe-To-Refresh layout, the data is updated from the Internet. (for those who do not know)

My data source is Firebase.

In my application, if the user is not connected, it shows a network error message, after the Internet is turned on, it does not receive data.

How do I get data from my database.

Here is the code:

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();

                }
            }
    );
}
+4
source share
2 answers

firebase . , , .

onChildChanged() , news node, node.

, setPersistenceEnabled(true)

+5

, , ?!

.

, .

:

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

Source: https://habr.com/ru/post/1667447/


All Articles