2017-06-20 42 views
0

我正在为我的聊天模块使用FirebaseRecyclerAdapter。现在我正在寻找一些解决方案,根据我的firebase数据库中的时间值更新我的FirebaseRecyclerAdapter更新具有特定值的FirebaseRecyclerAdapter

我只想显示FirebaseRecyclerAdapter中最后24小时的聊天内容。用户可以更新此值(24小时)。

我有"createdAt"参数与我聊天里面的每条消息。所以我基于当前时间和"createdAt"我们可以过滤FirebaseRecyclerAdapter运行时间吗?

我搜索了这个,但在每篇文章中,我没有找到任何解决方案。

回答

0

假设您将日期和时间保存为TIMESTAMP,请参阅我在此post的回答。

唯一的区别是,你需要与24小时comapare。使用数据结构,您可以轻松构建一个查询,只返回不超过30天的项目并显示它们。请使用此代码:

long display = new Date().getTime() - TimeUnit.MILLISECONDS.convert(30, TimeUnit.DAYS); 
Query messagesQuery = yourRef.orderByChild("timestamp").endAt(display); 
messagesQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     for (DataSnapshot messageSnapshot: snapshot.getChildren()) { 
      Log("TAG", messageSnapshot.getRef().getValue(String.class)); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}); 

希望它有帮助。

+0

嗨@Alex谢谢你的回复。但我没有时间戳的问题。但我无法隐藏FirebaseRecyclerAdapter中的特定记录。 –

+0

这是一样的原则。您需要将数据库中的数据('createdAt'字段的值)与执行检查时的数据进行比较。如果差异<24h,则显示其他消息,不显示消息。 –

+0

好吧,您的意思是我们会在将特定记录发送到FirebaseRecyclerAdapter之前排除特定记录? –