我有这个字段的记录:火力地堡使用ENDAT如果时间戳字段
age: 25
timestamp: 1484089199472
该记录由插入:
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("age", age);
result.put("timestamp", ServerValue.TIMESTAMP);
return result;
}
如果我使用endAt(24,"age")
比其工作良好,该项目是不可见的。
但是,如果我想在时间戳endAt使用它不工作。例如: endAt(100000,"timestamp")
并且该行保持可见状态。 为什么?
这是检查类型?
如何过滤?
我没有任何想法! :( 我希望有人能帮助我 感谢
编辑:!
查询为得到实际日行
@Override
public Query getQuery(final DatabaseReference databaseReference) {
Date endTime = new Date();
endTime.setHours(23);
endTime.setMinutes(59);
endTime.setSeconds(59);
return databaseReference
.child("toplist")
.endAt(endTime.getTime(),"timestamp")
.orderByChild("point")
.limitToFirst(50);
}
数据
@IgnoreExtraProperties
public class Rank{
public int number;
public String username;
public int point;
// [START post_to_map]
@Exclude
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("number", number);
result.put("username", username);
result.put("point", point);
result.put("timestamp", ServerValue.TIMESTAMP);
return result;
}
}
添加新的随机item
private void writeNewRandomTopListItem() {
Random rnd = new Random();
Rank item = new Rank();
item.username = "Test " + rnd.nextInt(20000);
item.point = rnd.nextInt(2000000);
mDatabase.child("toplist").push().setValue(item.toMap());
}
适配器
Query postsQuery = getQuery(mDatabase);
mAdapter = new FirebaseRecyclerAdapter<Rank, PostViewHolder>(Rank.class, R.layout.item_post, PostViewHolder.class, postsQuery) {
@Override
protected void populateViewHolder(final PostViewHolder viewHolder, final Rank model, final int position) {
viewHolder.bindToPost(model,position);
}
};
mRecycler.setAdapter(mAdapter);
...
toplist
-Ka8m3hN-vRjPZhKH3Rt
number: 0
point: 1269424
timestamp: 148407253222471
username: "Test 19727"
-Ka8m3hWRIQKL7faNqUS
number: 0
point: 1398061
timestamp: 1484075322472
username: "Test 17679"
您可以提供更高级别的数据库数据以及更多关于您所调用的确切查询的更多代码吗?如果你愿意,我很确定我能帮助你。 – hotrod
谢谢你的帮助。我编辑了我的帖子。 – ketom