Весь цикл записи и чтения работает на ура, но новые значения появляются снизу БД:
Как сделать так, Чтобы новые значения появлялись вначале?
Код добавления значений в БД:
FirebaseDatabase.getInstance().getReference().push().setValue(
new Message("1",userInput.getText().toString()));
Message.java:
public class Message {
public String number;
public String name;
private long messagetime, messagedate;
public Message() {}
public Message(String name, String number) {
this.number = number;
this.name = name;
this.messagetime = new Date().getTime();
this.messagedate = new Date().getTime();
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getMessagetime() {
return messagetime;
}
public void setMessagetime(long messagetime) {
this.messagetime = messagetime;
}
public long getMessagedate() {
return messagedate;
}
public void setMessagedate(long messagedate) {
this.messagedate = messagedate;
}
}
P.S.Заметил, что push() создает рандомные ключи, но по алфавиту
И получение значений(запись в ListView):
private void MessageSettings(View root) {
ListView listt = root.findViewById(R.id.listViewAddPeople);
adapter = new FirebaseListAdapter<Message>(getActivity(), Message.class, R.layout.item_ride_row,
FirebaseDatabase.getInstance().getReference()) {
@Override
protected void populateView(View v, Message model, int position) {
TextView number = v.findViewById(R.id.irr_reg_number);
TextView date = v.findViewById(R.id.irr_start_date);
TextView time = v.findViewById(R.id.irr_start_time);
ImageView img =v.findViewById(R.id.irr_sport);
if (model.getName().equals("1")) img.setImageResource(R.drawable.ic_1);
else {img.setImageResource(R.drawable.ic_0);
}
number.setText(model.getNumber());
date.setText(DateFormat.format("dd.MM.yyyy",model.getMessagedate()));
time.setText(DateFormat.format("HH:mm",model.getMessagetime()));
}
};
listt.setAdapter(adapter);
}
Ни в одной СУБД нет понятия "порядка записей". Все записи извлекаются в произвольном порядке, если явно не указан порядок.
Отсюда следует, что нет понятия "последней записи". Но можно ввести понятие записи с максимальным значением некоторого поля. Обычно это автоинкрементное поле или временная метка добавления записи
И последнее, Firebase поддерживает вывод отсортированного списка, но не поддерживает сортировку по убыванию. Самое простое, что можно сделать, это в сообщение добавить поле order
с отрицательным текущим временем
Итого получается
public class Message {
.......
private long order = -new Date().getTime();
.......
}
private void MessageSettings(View root) {
ListView listt = root.findViewById(R.id.listViewAddPeople);
adapter = new FirebaseListAdapter<Message>(
getActivity(),
Message.class,
R.layout.item_ride_row,
FirebaseDatabase.getInstance().getReference().orderByChild("order")
) {
@Override
protected void populateView(View v, Message model, int position) {
................
Ну или выполнять сортировку вручную
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Такая проблема: в поставленной задаче требуется сделать вращение фигуры вокруг своего центра
Не думал что придется тратить на это время,но уже изрядно потрепался в поисках ответаИспользование spring
Для ограничения ввода четырех цифр в лексическом анализаторе Lex используется следующая конструкция: [0-9]{4}Как ограничить ввод, так что бы ввести...
Всегда ли конструкцию if-else можно реализовать через аналогичную switch-case в языке Java? Вопрос был на экзамене в вузе, я предположил, к примеру, что...