如何按升序或降序排列 Firebase 数据库数据?

som*_*lse 3 android firebase firebase-realtime-database

我已经设置了一个 firebase 数据库,我想知道如何制作它以便我的 listView 以升序或降序显示我的数据。

例如:如果我想要最贵的东西,我会将它放在我的 listView 的顶部,而将便宜的放在底部。

基本上,我正在尝试创建一个排名活动,其中我有两个单独的列表视图,它们按成本排名并单独计数。

这是我的数据库:

这是我的计数:

  @Override
    protected void onStart() {
        super.onStart();

        itemlists=new ArrayList<String>();
        databaseItems.child("items").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot itemSnapShot : dataSnapshot.getChildren()) {
                    String itemname=itemSnapShot.child("itemName").getValue().toString();

                    itemlists.add(itemname);
                    adapter = new ArrayAdapter(SearchActivity.this,android.R.layout.simple_list_item_1,itemlists);
                    listFinalCount.setAdapter(adapter);

                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

Ale*_*amo 8

如果要对 Firebase 数据库查询的结果进行排序,则需要使用数字作为值而不是字符串。如果您保留字符串,正如我在屏幕截图中看到的那样,您需要知道字符串是有序的lexicographically,我确定这不是您要查找的内容。

按升序或降序对数据进行排序的最简单方法是在客户端。默认情况下,Firebase 可以按给定属性按升序对结果进行排序。Firebase 中没有按降序排序的方法,但可以进行一些调整。

如果您使用 aRecyclerView来显示数据,最简单的方法是使用以下代码:

LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)

此方法将颠倒您的顺序。

另一种方法是创建您自己的扩展FirebaseListAdapter和覆盖getItem()方法的适配器。

另一种方法是从数据库中获取数据,将其添加到 a 中Collection,aList是一个很好的解决方案,然后使用Collections.reverse(yourList);.