【问题标题】:How to get largest number from Firebase datalist如何从 Firebase 数据列表中获取最大的数字
【发布时间】:2020-05-22 17:08:18
【问题描述】:
我正在使用 Firebase 数据库,我有很多节点,每个节点都有一个不同且唯一的编号
这是我用来检索Id's的代码
for (DataSnapshot homework : homeworkChildren) {
NewsModel c = homework.getValue(NewsModel.class);
Log.e("MAX_VALU", String.valueOf(c.getId()));
}
什么我的c.getId() 回我
我只想要所有 ID 中的一个最大 ID
【问题讨论】:
标签:
java
android
firebase
firebase-realtime-database
integer
【解决方案1】:
要解决这个问题,您可以使用以下代码行:
List<Integer> ids = new ArrayList<>();
for (DataSnapshot homework : homeworkChildren) {
NewsModel c = homework.getValue(NewsModel.class);
ids.add(c.getId());
}
int max = Collections.max(ids);
Log.e("MAX_VALU", String.valueOf(max));
根据您的示例,您的 logcat 中的结果将是:
3
【解决方案2】:
在顶部声明一个变量。
var max = 0。
确保您的 c.getId() 永远不会返回 0。
现在在 for 循环中,你可以做这样的事情。
for(DataSnapshot homework : homeworkChildren){
NewsModel c = homework.getValue(NewsModel.class);
if(max == 0) {
max = c.getId()
} else {
if(max <= c.getId())
max = c.getId()
}
}
【解决方案3】:
如果ids 是每个新闻的模式形式,例如 (1,2,3,4,5......)。
这样做:
........
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//get the total number of children from the main dataSnapshot:
int totalItems = (int) dataSnapshot.getChildrenCount();
//now loop like you did
for (DataSnapshot homework : homeworkChildren) {
NewsModel c = homework.getValue(NewsModel.class);
if(c.getId() == totalItems){
//this is the max
Log.e("MAX_VALU", String.valueOf(c.getId()));
}
}