1
我正在製作一個使用Firebase實時數據庫的公開聊天應用程序,但一直存在這個問題。和普通的聊天應用程序一樣,我只向用戶顯示少量文本,以及何時/如果滾動列表的用戶更新並顯示更多消息。如何更改值並重新觸發Firebase中的eventListener?
我有一個監聽到我的火力地堡的參考,這是唯一顯示(比如10個消息):
int j = 10;
myRef.child("Chat").limitToLast(j).addChildEventListener(new com.google.firebase.database.ChildEventListener() {
@Override
public void onChildAdded(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
// Map<String,Object> datemsg = (Map<String,Object>)dataSnapshot.getValue();
Map<String,Object> msg = (Map<String,Object>)dataSnapshot.getValue();
String text = msg.get("Text").toString();
values.add(text);
@Override
public void onChildChanged(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(com.google.firebase.database.DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
現在我有一個滾動監聽器,對於j
的值更改爲j+10
但隨後的ChildEvenListener不觸發並且新消息不會添加到列表視圖中。
我也嘗試過使用查詢,但在更新值後又出現同樣的問題,應如何更新適配器?
沒有新的孩子加入,從而childevent監聽不會被觸發,但我想改變的
limitToLast(j)
大小和重新填充列表。 任何幫助,將不勝感激。
哦,我明白了。我雖然可能有另一種方法來實現它,而不是再次添加一個監聽器。現在我有了一個方向,我可以前進。謝謝你的時間。 –
我對此感到困惑的另一件事是,如果我們可以將int值作爲參數傳遞給startAt()或endAt()來指出該子節點中的確切節點數量? –
如果您想要開始的項目的*鍵*,您可以將其作爲第二個參數傳遞給'startAt()'。但是這是一個經常被開發人員誤解的參數,所以ymmv。 –