【问题标题】:Set start position in my RecyclerView when using FirestorePagingAdapter使用 FirestorePagingAdapter 时在我的 RecyclerView 中设置起始位置
【发布时间】:2018-06-15 09:59:47
【问题描述】:

我使用 Firestore 作为数据库,RecyclerViewFirestorePagingAdapter 结合使用在我的 Android 应用中呈现数据。

显示的数据按日期排序,我想为RecyclerView 设置默认起始位置以显示最近的对象。目前,默认情况下它显示第一个,在我的例子中是最旧的。这对于长列表是有问题的,因为用户必须向下滚动很长时间。

是否有可能以某种方式覆盖此行为?

编辑 1: 我已经按日期对数据进行了排序,但我想从中间的对象开始(例如从当前月份开始)并且能够向后和向前滚动。例如,想象一下电影列表 - 您想查看最近的电影并能够滚动到较旧和较新的电影。

【问题讨论】:

    标签: android firebase android-recyclerview google-cloud-firestore firebaseui


    【解决方案1】:

    是的,这是可能的。您可以通过三种方式实现这一目标。第一个是添加一个 date 到您的项目,然后根据它查询数据库。为此,您应该使用类似于以下代码行的查询:

    FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    Query query = collection("items").orderBy("date", Query.Direction.ASCENDING);
    

    您可以根据需要将方向作为第二个参数传递,可以是ASCENDINGDESCENDING

    第二种方法是使用以下代码行反转您的RecyclerView 的顺序:

    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
    layoutManager.setReverseLayout(true);
    layoutManager.setStackFromEnd(true);
    recyclerView.setLayoutManager(layoutManager)
    

    第三种方法是使用 getItem() 方法来反转项目查找,如下所示:

    @Override
    public HashMap getItem(int pos) {
        return super.getItem(getCount() - 1 - pos);
    }
    

    还有一点需要注意,FirebaseUI 库中的 FirestorePagingAdapter 旨在获取数据,而不是侦听实时更新。

    【讨论】:

    • 一切都好吗,问题解决了吗?
    • 抱歉回复晚了!我已经有了日期字段,并且正在按它进行排序。但我的问题如下 - 即使我的对象从 1 年前到未来 1 年,我想总是从当前的开始(比如说从当前月份开始)。这意味着用户可以前后滚动。
    • 这基本上是另一个问题。不要通过添加另一个问题来编辑问题,只需发布​​另一个新问题,以便我和其他用户可以帮助您。我个人的提示是使用带范围的查询。
    • 如果您认为我的回答对您最初的问题有所帮助,请考虑接受。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多