¿Me puede ayudar por favor para ordenar los datos en la vista de lista Listview está vinculado con Firebase base de datos, quiero ordenarlos por hora, lo que significa que los últimos datos que se agregan a Firebase aparece por primera vez en la vista de lista. Por favor, discúlpeme, todavía soy principiante en Android Studio
Estoy usando este código para obtener los datos de la base de datos Firebase
ListView listLocation;
DatabaseReference databaseLocation;
List<Location> locationList;
@Override
public void onStart() {
super.onStart();
databaseLocation.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
locationList.clear();
for (DataSnapshot locationSnapshot : dataSnapshot.getChildren() ){
Location location = locationSnapshot.getValue(Location.class);
locationList.add(location);
}
LocationList adapter = new LocationList(getActivity(), locationList);
Collections.reverse((List<LocationList>) adapter);
listLocation.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Se vuelve un poco difícil cuando no se está explicando cómo le gustaría ordenar su colección. Pero i este caso le estoy asumiendo que estamos tratando de ordenar por eldistance.
Por lo que los fragmentos de código sería de la siguiente manera.
Collections.sort(adapter, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Location l1 = (Location) o1;
Location l2 = (Location) o2;
return l1.getDistance().compareTo(l2.getDistance());
}
});
Estamos haciendo un comparador que se pueda comparar sus objetos, o si son todas las instancias de la misma clase, puede hacer que la clase implemente Comparable . A continuación, puede utilizar Collections.sort () para realizar la ordenación real.