当前位置: 首页 > 知识库问答 >
问题:

在Firebase中以上升顺序排序

璩和璧
2023-03-14

我想在Firebase数据库上从上到下排序。有人能帮帮我吗?我试图使用集合,但不起作用。

启动回收者视图的活动

public class activity_ranking extends AppCompatActivity {
RecyclerView rv;

List<User> users;

Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ranking);


    rv = (RecyclerView)findViewById(R.id.recycler);

    rv.setLayoutManager(new LinearLayoutManager(this));

    users = new ArrayList<>();


    FirebaseDatabase database = FirebaseDatabase.getInstance();

    adapter = new Adapter(users);

    Collections.sort(users, new Comparator<User>(){
        public int compare(User obj1, User obj2)
        {
            // TODO Auto-generated method stub
            return (obj1.getStars() > obj2.getStars()) ? +1: (obj1.getStars() > obj2.getStars()) ? 1:0 ;
        }
    });

    rv.setAdapter(adapter);
    Query query = database.getReference().child("users").orderByChild("stars");

    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            users.removeAll(users);
            for (DataSnapshot snapshot:
                    dataSnapshot.getChildren()) {
                User user = snapshot.getValue(User.class);


                users.add(user);

            }
            adapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}
}

MyClass用户

public class User {
public User() {
}

String username;
String name;
int stars;
String id;

public User(String username, String name, int stars, String id) {
    this.username = username;
    this.name = name;
    this.stars = stars;
    this.id = id;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getStars() {
    return stars;
}

public void setStars(int stars) {
    this.stars = stars;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}
}

共有1个答案

姬坚成
2023-03-14

若要反转列表,请将项添加到开头而不是结尾。所以代替:

users.add(user);

users.add(0, user);

请参见:Java数组如何在开始处添加元素

 类似资料:
  • 问题内容: 当我将以下Firebase数据库数据加载到tableView中时,数据按日期升序排序。如何通过降序排序(在顶部显示最新帖子)? 在Xcode中查询: JSON导出: 谢谢!! 编辑:下面的代码是整个解决方案,感谢Bawpotter 更新的查询: tableView cellForRowAtIndexPath Post.swift: 问题答案: 当Firebase将数据加载到tableV

  • 问题内容: 我正在尝试通过sequelize从数据库中输出所有对象列表,如下所示,并希望在我在where子句中添加id时对数据进行整理。 但是问题是渲染后,所有数据按如下进行整理。 正如我发现的那样,它既没有按ID也没有按名称排序。请帮我解决。 问题答案: 在序列化中,您可以轻松添加order by子句。 看看我如何添加对象数组? 编辑: 一旦在诺言中收到对象,您可能必须订购这些对象。查看有关根据

  • 我想知道mongoDB如何比较"_id"字段时做如下查询: 是否纯粹基于id的时间戳部分?

  • 问题内容: 我有一个包含jpg和其他文件的目录,所有jpg的文件名中都带有数字。有些文件名中可能包含其他字符串。 例如。 或者可能是 在Python中,我需要按升序排列所有jpg的列表。这是此代码段 我得到的是这个 显然,它首先盲目地排序最高有效数字。我试过使用,因为您可以看到它希望能够解决该问题,但没有区别。 问题答案: 假设每个文件名中只有一个数字: 这个版本也可以在Python 3中使用:

  • 我创建了这个随机生成的arraylist,它生成1-50个数字。我想按升序对生成的数字进行排序。不使用集合。sort,我如何使用ArrayList进行排序?

  • 本文向大家介绍Python程序以升序排列句子中的单词,包括了Python程序以升序排列句子中的单词的使用技巧和注意事项,需要的朋友参考一下 为了按升序对句子中的单词进行排序,我们首先需要使用空格作为分隔点将句子分为单词。为简单起见,我们仅在空间上进行分割,并让标点符号在那里。我们也可以使用replace或regex将其删除。 拆分句子后,我们可以使用sort或sorted方法按字典顺序对单词进行排