gpt4 book ai didi

android - 如何使用 RecyclerView 和 LinearLayoutManager 在顶部显示项目而不考虑项目数量?

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:33 25 4
gpt4 key购买 nike

我有一个项目列表。这些项目按日期排序。日期早于现在的项目(“旧”项目)在用户打开应用程序时不应该可见,但用户应该能够通过将列表滚动到顶部来查看它们。

我找到第一个带有 future 日期的项目("new"项目)的 position 并调用 recyclerView.scrollToPosition(position)

我还尝试了 layoutManager.scrollToPositionWithOffset(position, 0)

如果列表中有很多"new"项目,这会起作用。

但是如果项目太少(例如,一个“旧”和一个"new"),那么这些方法就不起作用了。

无论列表中有多少项目,如何以编程方式将列表滚动到给定位置的项目以将此项目置于顶部?

最佳答案

最初,为 RecyclerView 提供一个仅包含 future 事件的数据集。

recyclerView 上设置一个 onTouchListner 来检测向上滚动。如果 findFirstCompletelyVisibleItemPosition() 在检测到向上滚动时返回第一个索引,则表示向上过度滚动。然后,更改数据集以包含旧条目。然后,使用 adapter.notifyDataSetChanged() 通知适配器数据集更改并重新绘制列表。

注意:

  1. 当您在 RecyclerView 上设置 onTouchListner 时,确保您不要吸收触摸事件[onTouchEvent() 应该返回 false]

  2. 有一次,您第一次检测到向上过度滚动,你可以设置一个标志来表明你不需要改变 future 触摸事件的数据集。

关于android - 如何使用 RecyclerView 和 LinearLayoutManager 在顶部显示项目而不考虑项目数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com