【问题标题】:I want to order my data from newest to oldest using Cloud Firestore in Android using Java我想使用 Java 在 Android 中使用 Cloud Firestore 从最新到最旧对数据进行排序
【发布时间】:2020-08-15 20:06:03
【问题描述】:

我想将 Cloud Firestore 中的数据从最旧到最新排序,这是我的代码:

  private void loadNotesList() {
    firestoreDB.collection("keluhan")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        List<keluhanModel> notesList = new ArrayList<>();

                        for (DocumentSnapshot doc : task.getResult()) {
                            keluhanModel note = doc.toObject(keluhanModel.class);
                            note.setId(doc.getId());
                            notesList.add(note);
                        }

                        mAdapter = new adapterKeluhan(notesList, getApplicationContext(), firestoreDB);
                        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
                        recyclerView.setLayoutManager(mLayoutManager);
                        recyclerView.setItemAnimator(new DefaultItemAnimator());
                        recyclerView.setAdapter(mAdapter);
                    } else {
                        Log.d(TAG, "Error getting documents: ", task.getException());
                    }
                }
            });
}

我尝试使用 .orderBy("date", Query.Direction.ASCENDING) 但它没有做任何事情,它只是我的 Android 应用程序中的一个白页。

这是我的数据库:

【问题讨论】:

  • 请编辑您的问题并将您的数据库结构添加为屏幕截图。

标签: java android firebase google-cloud-firestore


【解决方案1】:

为了能够按日期对结果进行排序,您应该使用以下查询:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference keluhanRef = rootRef.collection("keluhan");
Query dateQuery = keluhanRef.orderBy("timeStamp", Direction.ASCENDING);
dateQuery.get().addOnCompleteListener(/* ... */);

调用:

.orderBy("date", Query.Direction.ASCENDING)

将永远无法使用,因为您的属性名称是 timeStamp不是 date

【讨论】:

  • 但是我又遇到了一个问题,它是按时间排序但也按他们的id排序,如何只按时间而不是id排序
  • 如果没有明确的 .orderBy("NIM", Query.Direction.ASCENDING) 或任何您的属性名称,则没有顺序。如果您有这样的电话,只需将其删除。
猜你喜欢
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2021-04-30
  • 2014-10-18
  • 1970-01-01
  • 2018-04-13
相关资源
最近更新 更多