![](/img/trans.png)
[英]How can I get distinct items from firebase to spinner in android [JAVA]
[英]How can I get firebase items in descending order in Java / Android
假設我有一些數據,如下所示:
"teilnehmer" : {
"ATYFdfNRThzrEC83" : {
"score" : 2500,
"teamname" : "Was ist mit Karsten los?"
},
"VMT9hp65Tui55J2" : {
"score" : 12500,
"teamname" : "Team Zombie.de"
},
"dPkdf233dbMjCA2" : {
"score" : 21635,
"teamname" : "Bielefeld zwei"
},
"U1xTtKJa0wdZ13" : {
"score" : 500,
"teamname" : "Max der Eugen"
}.............
這段Java代碼:
mDatabase.child("rallye").child("teilnehmer").orderByChild("score").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
// teamname, Platzierung, Punkte
Teilnehmer teilnehmer = new Teilnehmer(((String) dataSnapshot.child("teamname").getValue()), "Platz x", (dataSnapshot.child("score").getValue())+" Punkte");
teilnehmerList.add(teilnehmer); // add to recyclerview
mAdapter.notifyDataSetChanged(); // save
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) { }
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
//adapter.remove((String) dataSnapshot.child("teamname").getValue());
//teilnehmerList.remove();
mAdapter.notifyDataSetChanged();
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) { }
@Override
public void onCancelled(DatabaseError databaseError) {}
});
這不行
.orderByChild("score")
螢幕擷取畫面:i.stack.imgur.com/Y8NlW.png
我在Rallygame中獲得了隊名和得分。 但是順序是升序的,而不是降序的:/
Output:
Teamname ----------- Score
Team Zombie 50
Team xyz 1500
Team foo 16000
順序錯誤 :/
然后我有第二個問題,如何輸出當前的排名?
例如:
我的列表顯示如下:
Rank Teamname Points
1 "Team 1" 25.000
2 "Team red" 12.000
3 "Team google" 9.500
4 "Team yellow" 1.250
我的Firebase包含:
"ATYFdfNRThzrEC83" : {
"score" : 2500,
"teamname" : "Was ist mit Karsten los?"
},
我只有2列,分數和隊名
在我的第一個問題中,我解決了訂單問題(最高分->第一名)
我的布局文件:
<TextView
android:id="@+id/teamName"
android:textColor="@color/teamTitle"
android:textSize="16dp"
android:textStyle="bold"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/teamRank"
android:layout_below="@id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/teamScore"
android:textColor="@color/teamScore"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:layout_height="wrap_content" />
3個輸出TextView,但Firebase中只有2個數據列。 得分最高的團隊將排在排名第1位(我不知道我的德語“ Platz n”的正確英語單詞)。 比等級2,等級3 ...
我的第一次嘗試:
int i = 1;
while(dataSnapshot.child("teamname").getValue()) {
Teilnehmer teilnehmer = new Teilnehmer(((String) dataSnapshot.child("teamname").getValue()), "Platz "+i, (dataSnapshot.child("score").getValue())+" Punkte");
teilnehmerList.add(0, teilnehmer); // add to recyclerview: add(0, teilnehmer) gebe in desc aus von 0 zum n. eintrag
mAdapter.notifyDataSetChanged(); // save
i++;
}
我想要連續三個輸出。 隊名,排名中的排名和游戲中的當前分數。
但是我的while循環不起作用。
在此功能中:
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
// teamname, Platzierung, Punkte
Teilnehmer teilnehmer = new Teilnehmer(((String) dataSnapshot.child("teamname").getValue()), "Platz x", (dataSnapshot.child("score").getValue())+" Punkte");
teilnehmerList.add(teilnehmer); // add to recyclerview
mAdapter.notifyDataSetChanged(); // save
}
我假設您要添加到數組列表。 而不是添加到末尾,而是添加到開頭,因為orderByChild
正在工作,並且按升序排列。 Firebase不支持降序。
teilnehmerList.add(0, teilnehmer); // <--- add 0 as 1st parameter
您的第二個問題缺少細節。 創建另一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.