0

我创建了一个警报系统,供护理人员用来为老年人设置警报。在此警报中,我如何获取已设置为顶部的最新警报,而不是每次都出现在底部

mListAdapter = new FirebaseListAdapter<notify>(this, notify.class, android.R.layout.two_line_list_item, mRoot) {
        @Override
        protected void populateView(View view, notify notify, int i) {
            ((TextView)view.findViewById(android.R.id.text1)).setText(notify.getCourse() + "Quantity:" + notify.getQuantity() +"," + notify.getRepeat());
            ((TextView)view.findViewById(android.R.id.text2)).setText("Medication set to " +notify.getDate() + " at " + notify.getTime());
        }
    }; listView.setAdapter(mListAdapter);
4

2 回答 2

1

请注意,默认情况下,子项按其键的升序检索。如果在您的情况下,密钥是由 Firebase 自动生成的(例如使用push()函数),那么它们的值基于时间戳,并且稍后生成的密钥大于之前生成的任何密钥。因此,您创建的最后一个警报出现在列表的底部。

为了颠倒这个顺序,您可以为每个子对象存储0 - timestamp其名为 的属性下的值created_timestamp,其中timestamp是创建对象时的时间戳。然后,您可以使用函数orderBy('created timestamp')来检索具有预期顺序的子项。

于 2016-04-12T13:48:45.280 回答
0

反转数据不是FirebaseListAdapter要解决的问题。相反,您可以在数据库查询 ( mRoot) 或 Android 视图中解决它。过去已经回答了一整本书有关反转查询的问题,因此我将重点介绍反转视图中的项目。

由于您使用的是ListView

listView.setStackFromBottom(true);

对于一个RecyclerView等价的将是:

manager.setStackFromEnd(true);
于 2016-04-12T13:46:10.030 回答