I want to create a highscores ListView with entries being displayed in descending order, with the use of orderByValue I am getting them sorted in ascending order however when using Collections.reverse() with my arraylist, the entries are still not reversed in the ListView.
private Query reference; //database reference
private ListView ListView; //creating listview
private ArrayList<String> arrayList = new ArrayList<>();
private ArrayAdapter<String> adapter; //creating array adapter
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_high_scores);
reference = FirebaseDatabase.getInstance().getReference("Highscores").orderByValue(); //reference the highscore section in database
ListView = (ListView) findViewById(R.id.list_view); //find the list view in the xml
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList); // set the adapter to the list
Collections.reverse(arrayList);
ListView.setAdapter(adapter);
reference.addChildEventListener(new ChildEventListener() { // add a child listener for the database
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String value = dataSnapshot.getValue().toString(); // convert the values in the databse to string
arrayList.add(value); //add them to the arraylist
adapter.notifyDataSetChanged(); //notify that the dataset has changed
}
the data in the database is
{ "-M4FPEiJ_DVc9kaQrebz" : 0,
"-M4FPIuMbArT6KjtrDtO" : 6,
"-M4FPP5EdC1CaKgOVECX" : 17,
"-M4FPTWg7JkKRvWakRkH" : 12,
"-M4FPYPNVZIjhBM6gVWW" : 11,
"-M4FPbL9I-fsQwRvVIFX" : 5 }
Answer:
Managed to fix this by simply adding to the arraylist at 0 index no matter what, all other elements were simply shifted to the right leading to a listview in descending order.
String value = dataSnapshot.getValue().toString(); // convert the values in the databse to string
arrayList.add(0, value); //add them to the arraylist
adapter.notifyDataSetChanged(); //notify that the dataset has changed