我從 firebase 獲取物件,有兩種方法可以獲取物件
這個
text1
15.10.2021
text3
12.10.2021
text2
29.11.2021
text4
1.1.2022
或者這個
{text = text1 , date = 15.10.2021}
{text = text3 , date = 12.10.2021}
{text = text2 , date = 29.11.2021}
{text = text4 , date = 1.1.2022}
我需要按日期對這個物件進行排序
text3 12.10.2021
text1 15.10.2021
text2 29.11.2021
text4 1.1.2022
我正在嘗試將所有內容添加到串列中,但我不知道如何對它們進行排序。在串列中它看起來像這樣
[text1, 15.10.2021, text3, 12.10.2021, text2, 29.11.2021, text4, 1.1.2022]
我為 RecyclerView 這樣做,最初我從 Firebase 獲取日期和字串
List<String> reminder = new ArrayList<>();
List<String> date = new ArrayList<>();
dbf.child("Reminders").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
reminder.clear();
date.clear();
for(DataSnapshot child2 : snapshot.getChildren()) { // getting a data from DB to ArrayList for dropping into Adapter
for(DataSnapshot tChild : child2.getChildren()) {
if (tChild.getKey().equals("text")) {
reminder.add(tChild.getValue().toString());
rem = reminder.toArray(new String[reminder.size()]); // rem = String[]
}
if (tChild.getKey().equals("date")) {
date.add(tChild.getValue().toString());
dat = date.toArray(new String[date.size()]); // dat = String[]
}
}
mainRowAdapter rAdapter = new mainRowAdapter(MainActivity.this, rem,dat);
rv.setAdapter(rAdapter);
rv.setLayoutManager(new LinearLayoutManager(MainActivity.this));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
然后在 Adapter 類中使用方法 setText()
所以,頂部的問題
uj5u.com熱心網友回復:
您的日期以字串形式存盤,不幸的是無法按時間順序排序。如果您想按日期排序,我建議將它們存盤為 ISO-8601 格式,例如"2021-10-15",它們的字典順序與其時間順序相匹配。
獲得該格式后,您可以使用以下命令以正確的順序從資料庫中檢索節點:
DatabaseReference reminders = dbf.child("Reminders");
Query remindersByDate = reminders.orderByChild("date");
remindersByDate.addValueEventListener(...
另見:
- Firebase 根據日期按點排序
- Firebase endAt() 不適用于日期字串?
- 在firebase中按范圍查詢
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/312310.html
