*更新2 - 12/21 - 以下内容现在只返回我想要的节点。剩下的就是将以下每个节点中的POJO详细信息(5条记录)放入FirebaseListAdapter。请参阅本文底部的代码,messageText.setText(model.getSubscriberNickname());
将返回null,因为POJO是另一个较低的节点。
final DatabaseReference myRef = database.getReference().child("userposts").child("TEST");
Query query = myRef.orderByKey()
.startAt("1495522799000")
.endAt("1495954799000");
* Update 1 - 12/21 - 当我使用以下参考时,我在UI中显示了4个所需的POJO字段,用于单个节点/密钥(“1495954799000”)。但是,我希望在多个节点/键上获得相同的结果。因此,我希望使用startat / endat。我需要有关startat / endat语句语法的帮助。
final DatabaseReference myRef = database.getReference().child("userposts").child("TEST").child("1495954799000");
我想使用FirebaseListAdapter
。我有一个非常简单的FirebaseListAdapter
示例已经在没有.startat / .endat且仅有3个属性的情况下工作。我不知道该怎么做是查询,跳过节点级别并将POJO
放在FirebaseListAdapter
中。
我现在想用以下现有结构实现FirebaseListAdapter
。我有一个POJO
作为我的模型,名为“发布”我从下面的POJO
详细信息(最底部节点下方)中删除,因为POJO
有许多属性。 “TEST”级别有多个节点。在这个级别之下是毫秒日期,在每天的最后一秒结束。在它下面是一个自定义键,其下方是POJO
。每个自定义键下方只有一个POJO/Model
(使用& s)。
我的代码功能正在于它从Firebase
返回TEST下面的键。 UI
中的所有属性均为空白,因为POJO
尚未填充。我想要的是在TEST下方过滤这些键(即返回最后4天),在下一个较低级别忽略带有& s的键,并在每个日期下填充POJOs
并显示4列表POJO
中Adapter
的字段。
(我不关心时间=“HH:mm:ss”。稍后会解决这个问题)
下面的屏幕截图显示了Firebase结构(黑色)和我想要检索的数据(红色)。最后,我希望POJO中的4个属性在FirebaseListAdapter中表示。
以下是一些代码:
private FirebaseListAdapter<Post> adapter;
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference().child("userposts")
ListView listOfMessages = (ListView)findViewById(R.id.list_of_messages);
myRef.child("TEST")
.startAt(1495522799000L)
.endAt(1500188399000L);
adapter = new FirebaseListAdapter<Post>(this, Post.class,
R.layout.message, myRef) {
@Override
protected void populateView(View v, Post model, int position) {
// Get references to the views of message.xml
TextView messageText = (TextView)v.findViewById(R.id.message_text);
TextView messageUser = (TextView)v.findViewById(R.id.message_user);
TextView messageTime = (TextView)v.findViewById(R.id.message_time);
TextView messageLeg = (TextView)v.findViewById(R.id.message_leg);
messageText.setText(model.getSubscriberNickname());
messageLeg.setText(model.getLegName());
messageTime.setText("HH:mm:ss");
messageUser.setText(model.getMessageText());
}
};
listOfMessages.setAdapter(adapter);