我正在使用 firebase 实时数据库来存储和检索数据,但由于某种原因,我无法实现我想要的。
我想在刷卡刷新布局上一次获得 20 条记录。
我的数据看起来像:
最初,我加载 50 条记录:
chat.limitToLast(default_num_of_messages).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map map = dataSnapshot.getValue(Map.class);
String user_id = map.get("user_id").toString();
String message = map.get("message").toString();
String timestamp = map.get("timestamp").toString();
Log.d("MAP", map.toString());
ChatMessage chat_message = new ChatMessage();
chat_message.setUser_id(user_id);
chat_message.setMessage(message);
chat_message.setTimestamp(Long.parseLong(timestamp));
Log.d("CHAT MSG", chat_message.toString());
if(Integer.parseInt(user_id) == Utils.getInstance().getLoggedInUser().getId()) {
addMessageBox(chat_message, 1);
}
else{
addMessageBox(chat_message, 2);
}
}
在刷新这些之后,我想再加载 20 个。我正在尝试做这样的事情。但它似乎没有回来。
@Override
public void onRefresh() {
if(refresh_toggle) {
swipe_view.setRefreshing(true);
Log.d("CHAT", "REFRESHED!!!");
//reload new data
chat.orderByChild("timestamp").endAt(10).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map map = dataSnapshot.getValue(Map.class);
String user_id = map.get("user_id").toString();
String message = map.get("message").toString();
String timestamp = map.get("timestamp").toString();
});
}
}
如您所见,我正在尝试 orderByChild“时间戳”,然后尝试不同的 startAt()、endAt() 组合,但似乎没有任何效果。
慕田峪9158850
相关分类