java - firebase database to Custom list view problem
问题描述
could anybody see this if im doing it right? from firebase database im getting my datas using this
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference()
.child("Users").child("Displayname")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
Map<String, Object> map =(Map<String, Object>) snapshot.getValue();
for (Map.Entry<String, Object> entry : map.entrySet()){
Cred = (String) entry.getValue();
friend = snapshot.getKey();
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
And placing to String array by using this
List<String> list = new ArrayList<String>();
list.add(Cred+" "+friend);
String[] stringArray = list.toArray(new String[0]);
by using below code i would like to arrange it descending
Comparator comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String num1 = o1.split(" ")[0];
String num2 = o2.split(" ")[0];
return Integer.parseInt(num2) - Integer.parseInt(num1);
}
};
Arrays.sort(stringArray, comparator);
System.out.println(Arrays.toString(stringArray));
But im not getting my results:
Expected result :
"300.0 Baul",
"4.0 Alex",
"1.0 Lex B05"
My system print out:
2019-12-23 15:17:02.285 752-752/com.seamans.marina I/System.out: [4.0 Alex]
2019-12-23 15:17:02.292 752-752/com.seamans.marina I/System.out: [300.0 Baul]
2019-12-23 15:17:02.296 752-752/com.seamans.marina I/System.out: [1.0 Lex B05]
My firebase database:
解决方案
尝试使用这种方式排序
Collections.sort(stringArray, (c1, c2) -> {
String num1 = c1.split(" ")[0];
String num2 = c2.split(" ")[0];
return Double.compare(Double.parseDouble(num2), Double.parseDouble(num1));
});
System.out.println(stringArray);
更新1:用上面替换这个块
Comparator comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String num1 = o1.split(" ")[0];
String num2 = o2.split(" ")[0];
return Integer.parseInt(num2) - Integer.parseInt(num1);
}
};
Arrays.sort(stringArray, comparator);
System.out.println(Arrays.toString(stringArray));
推荐阅读
- ios - Swinject:在工作区中使用多个模块(项目)时解析失败
- typescript - 可以用不同的约束子类型来实例化'{}'打字稿错误
- java - 为什么赋值时值会增加?
- nginx - NGINX 在页面重新加载时返回 404 错误(Ember 应用程序)
- python - 自动更新类属性
- laravel - App Engine 无法连接到 gcloud sql 数据库
- common-lisp - “COMMON-LISP-USER”中没有名为“VEXTEND”的符号
- php - 如何在 laravel 中翻译油门?
- javascript - 无法使用 URL 链接从 AJAX API 获取数据
- output - 空手道输出表中的效率字段代表什么?效率比什么?