是否可以对Firebase数据进行排序并将其应用于Android Studio上的实时数据库?

时间:2017-11-05 18:19:39

标签: android sorting firebase firebase-realtime-database

我正在尝试在Android Studio端对Firebase数据库数据进行排序,并实时应用它。当我在我的数据库上进行手动更改时,我的代码会立即成功更新视图,但我想知道是否可以使用代码按名称排序。我认为orderByChild是执行此操作的函数,但它不会更改数据库。

从firebase获取数据并显示的功能:

private void fetchRepoData(String profileUserID) {

    profileUserDatabase = repoReference.child(profileUserID);

    //DatabaseReference reposReference = profileUserDatabase.child("Repos");

    profileUserDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            repoListItems.clear();
            repoNameList.clear();
            userNameList.clear();
            descriptionList.clear();

            Toast.makeText(getActivity(), "changed", Toast.LENGTH_SHORT).show();
            for(DataSnapshot snapshot : dataSnapshot.getChildren()) {

                repoNameList.add(snapshot.getValue(RepoInfo.class).getRepoName());
                userNameList.add(snapshot.getValue(RepoInfo.class).getOwner());
                descriptionList.add(snapshot.getValue(RepoInfo.class).getDescription());
            }

            for(int i = 0; i < repoNameList.size(); i++) {
                repoListItems.add(new RepositoryItem(i, repoNameList.get(i), userNameList.get(i), descriptionList.get(i)));
            }
            adapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

按名称排序的单选按钮

    sortByNameRadio.setOnClickListener(
            new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    repoReference.child("subchild").orderByChild("name");
                    adapter.notifyDataSetChanged();
                }
            }
    );

1 个答案:

答案 0 :(得分:0)

当您致电Query时,它会返回新的profileUserDatabase = repoReference.child(profileUserID); Query query = repoReference.child("subchild").orderByChild("name"); query.addValueEventListener(new ValueEventListener() { for(DataSnapshot snapshot: dataSnapshot.getChildren()) { System.out.println(snapshot.getKey()); ... 对象。您需要存储引用并附加侦听器 查询对象。

{{1}}