Firebase Sorting Score from Highest to Lowest ~ Android -
inside mainactivity
, have function:
public void sortingdata() { mrootref = new firebase("https://fyp-1-43a27.firebaseio.com/user"); dbsortalldata = firebasedatabase.getinstance().getreference(); listview mlvscore = (listview) findviewbyid(r.id.lvscore); final list<userinformation> listscore = new linkedlist<>(); final arrayadapter<userinformation> adapter = new arrayadapter<userinformation> (this, r.layout.scoreboard_row, listscore) { @nonnull @override public view getview(int position, view view, viewgroup parent) { if (view == null) { view = getlayoutinflater().inflate(r.layout.scoreboard_row, parent, false); } userinformation item = listscore.get(position); ((textview) view.findviewbyid(r.id.tvscorename)).settext(item.getname()); ((textview) view.findviewbyid(r.id.tvscorepoint)).settext(item.getscore()); return view; } }; mlvscore.setadapter(adapter); com.firebase.client.query queryref = mrootref.orderbychild("score").startat("score").endat("score").limittofirst(50); queryref.addchildeventlistener(new com.firebase.client.childeventlistener() { @override public void onchildadded(com.firebase.client.datasnapshot datasnapshot, string s) { userinformation si = datasnapshot.getvalue(userinformation.class); listscore.add(si); adapter.notifydatasetchanged(); } @override public void onchildchanged(com.firebase.client.datasnapshot datasnapshot, string s) { } @override public void onchildremoved(com.firebase.client.datasnapshot datasnapshot) { } @override public void onchildmoved(com.firebase.client.datasnapshot datasnapshot, string s) { } @override public void oncancelled(firebaseerror firebaseerror) { } }); }
my model class:
public class userinformation implements comparable<userinformation> { public string name; public string age; public string score; public userinformation() {} public userinformation(string name, string age, string score) { this.name = name; this.age = age; this.score = score; } // ... getters , setters here. }
these piece of code works, sorts lowest highest.
my problem how sort highest lowest? suggestions , advises appreciated.
you can reorder data on client side - reverse list.
edit : when want reverse list, can use :
collections.reverse(listscore); adapter.notifydatasetchanged();
you can add each element database front of list in reverse order :
public void onchildadded(com.firebase.client.datasnapshot datasnapshot, string s) { userinformation si = datasnapshot.getvalue(userinformation.class); listscore.addfirst(si); adapter.notifydatasetchanged(); }
and change declaration of listscore :
final linkedlist<userinformation> listscore = new linkedlist<>();
Comments
Post a Comment