![](/img/trans.png)
[英]When user login again then data was removed from Firebase database Android
[英]How to ask data from firebase database again?
我正在使用具有“ 刷卡到刷新”布局的應用程序。
在“滑動到刷新”布局中向上滾動時,數據將從Internet刷新。 (對於那些不知道的人)
我的數據源是Firebase。
在我的應用程序中,如果用戶未連接,則顯示網絡錯誤消息,然后在打開互聯網后,它不會獲取數據。
你如何從我的數據庫中再次獲取數據。
這是代碼:
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();
}
}
);
}
使用firebase實時數據庫時,無需再次執行請求。 一旦數據發生變化,它將自動為您獲取數據,並且將調用其中一個偵聽器。
每次修改news
子節點時都會觸發onChildChanged()事件,包括對子節點后代的任何修改。
要啟用脫機功能,請不要忘記使用setPersistenceEnabled(true)
查看文檔以獲取更多信息
上面的答案是最有幫助的,但對於如何再次請求數據的問題?!
您只需再次附加偵聽器即可。
但請記住首先分離舊的偵聽器,以便數據不會在適配器中出現兩次。
這是代碼:
mNewsSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
myAdapter.clear();
mNewsDatabaseReference.removeEventListener(mNewsChildEventListener);
mNewsDatabaseReference.addChildEventListener(mNewsChildEventListener);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.