我有一个ArrayList,代表游戏中的不同球队,他们的得分不同。在Firebase中,我为每个团队分配了一个点值。我不知道如何在Android Studio中获取该点值数据,以便对ArrayList进行排序。
到目前为止,我已经尝试过使用Comparable,但是我还没有使用它。我想使用TreeMap,但我认为ArrayList最适合这种情况。
database = FirebaseDatabase.getInstance();
u1 = database.getReference("Hawkeyes");
u2 = database.getReference("Lions");
u3 = database.getReference("Tigers");
sportTeams = new ArrayList<String>();
sportTeams.add("Hawkeyes");
sportTeams.add("Lions");
sportTeams.add("Tigers");
在firebase中,它看起来像这样:
鹰眼-“ 20”
狮子-“ 64”
老虎-“ 25”
我希望能够以某种方式检索数据,以便我可以基于这些点值对ArrayList进行排序。我该怎么办?
答案 0 :(得分:0)
我将您的问题解释为:“如何从Firebase读取数据并对数据进行排序”
您可能不想像现在那样存储数据,而是要像这样存储数据(这是数组通常在Firebase中的存储方式)
以此类推。...
您可以使用以下方法生成这些UID:
.push().getKey()
在任何DatabaseReference上。
要回答您的问题,您可以这样做(来自Firebase文档):
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Post post = dataSnapshot.getValue(Post.class);
System.out.println(post);
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
“ dataSnapshot”的值将是您的DatabaseReference对象包含为快照的值。您可以使用.getValue(ClassName.class)方法将这些值作为对象访问。因此,如果您的Team对象具有“名称”属性和“得分”属性,则可以从Firebase作为Team对象获取这些值。
现在,要对这些值进行排序,您可以使用任何排序算法来组织这些团队(按字母顺序或基于得分)。例如,您可以使用快速排序或插入排序。
更多有关排序的信息:
答案 1 :(得分:0)
您可以使用
Collections.sort(your_arrayList);
Collections.reverse(your_arrayList);
要对团队的数量进行排序,首先获取它们,然后应用它,或者仅对对象数据使用comparable。