Android FIrebase Query会在下面填充FirebaseListAdapter 2节点

时间:2017-12-21 05:40:47

标签: java android firebase firebase-realtime-database

*更新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列表POJOAdapter的字段。

(我不关心时间=“HH:mm:ss”。稍后会解决这个问题)

下面的屏幕截图显示了Firebase结构(黑色)和我想要检索的数据(红色)。最后,我希望POJO中的4个属性在FirebaseListAdapter中表示。

enter image description here

以下是一些代码:

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);

0 个答案:

没有答案