Хорошо, так что я разобрался с ответом. В будущем я опубликую то, что сделал, если у кого-то возникнет тот же вопрос.
Я создал метод, который преобразует строковые даты в длинные (миллисекунды). (Это то, что база данных firebase использует для времени и даты.)
public Long toMilli(String dateIn) throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date date = (Date) formatter.parse(dateIn);
long output = date.getTime() / 1000L;
String str = Long.toString(output);
long timestamp = Long.parseLong(str) * 1000;
return timestamp;
}
Я преобразую дату, вызвав метод:
//Store date,time and destination on a new Trip.
datePassed = dateText.getText().toString();
timePassed = timeText.getText().toString();
String dateSelected = dateText.getText().toString() + " " + timeText.getText().toString();
Long timestamp = toMilli(dateSelected);
Я создал новую конструкцию для Trip и store новая временная метка (Long) там и сохранила Trip в базе данных.
public Trip(String destination, Long timestamp) {
this.destination = destination;
this.timestamp = timestamp;
}
Чтобы прочитать данные из базы данных:
//Get uId of the user
final String uId = currentFirebaseUser.getUid();
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.child(uId).child("trips").getChildren()) {
String destination = child.child("destination").getValue().toString();
Long timestamp = child.child("timestamp").getValue(Long.class);
Следующий шаг - преобразование Long в String. Для этого я создал новый метод.
public String convertTime(long time){
Date date = new Date(time);
Format format = new SimpleDateFormat("dd/MM/yyyy HH:mm");
return format.format(date);
}
И, наконец, вызовите метод:
String time=convertTime(timeLong);
Перед чтением данных я создал новый ArrayList, затем я создаю новый объект - Trip в моем случае и передаются в значениях. Каждый раз, когда я читал детскую поездку - с помощью команды l oop я добавлял ее в список.
В конце я сортировал список перед тем, как отобразить его пользователю. Вы должны переопределить CompareTo, чтобы это работало.