- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试做这样的事情:
RecyclerAdapter recyclerAdapter;
LinearLayoutManager recyclerManager;
//set items....
recyclerAdapter.notifyDataSetChanged();
int itemPosition = recyclerManager.findFirstVisibleItemPosition(); //returns -1
但屏幕上显然有新项目。来自docs ,我看到了这个:
Returns the adapter position of the first visible view. This position does not include adapter changes that were dispatched after the last layout pass.
所以我认为布局过程还没有完成。但是我不知道如何确保在调用此方法之前完成它。我什至试过这个:
if (!isInLayout()) {
recyclerManager.requestLayout();
}
在调用该方法之前,但这没有帮助。谢谢你的帮助。
最佳答案
您是正确的,问题是尚未发生布局传递,这就是您得到 POSITION_NONE
的原因。
简单地做一个像 if (!isInLayout())
这样的检查是行不通的,因为你会做一次检查,它会返回 false,然后就结束了。
在这种情况下你真正想做的是使用 ViewTreeObserver
监听布局事件。
例如:
recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int itemPosition = recyclerManager.findFirstVisibleItemPosition();
}
});
顺便说一句,如果您只是在第一次填充 RecyclerView 时使用 findFirstVisibleItemPosition()
,您可能根本不需要它。第一个可见项将始终为 0,除非您还执行其他操作来滚动 RecyclerView。
关于android - LinearLayoutManager.findFirstVisibleItemPosition() 返回 POSITION_NONE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38272178/
我正在尝试制作类似于 Instagram 过滤器布局的布局。基本上,当您选择一个过滤器时,它会滚动到您选择的项目 + 1,向您显示还有更多过滤器。 我目前正在尝试为我的水平 RecyclerView
在 GridLayoutManager 中,我能够设置跨度计数,这使得 View 内的项目可以调整大小,以便能够水平适应该跨度计数。 我有一个 LinearLayoutManager,我想以同样的方式
我有一个在 fragment 中实现的 RecyclerView,我正在尝试向代码中添加分隔符。我让 RecylcerView 按预期工作,但 LinearLayoutManager 无法解析 get
我需要修改与 RecyclerView 一起使用的垂直 LinearLayoutManager 以便它可以水平滚动。 当 RecyclerView 垂直滚动时,它会添加新项目,因为我正在扩展 Line
我的 Activity 正在显示一个带有 LinearLayoutManager 的 RecyclerView。我想获取列表中的第一项 (View)。根据this post's accepted an
我正在尝试做这样的事情: RecyclerAdapter recyclerAdapter; LinearLayoutManager recyclerManager; //set items.... r
我的 LinearLayoutManager 有一个错误,当我运行这段代码时它说 error: incompatible types: NotificationFragment cannot be c
我想将 RecyclerView 滚动到某个位置,我使用 LinearLayoutManager.scrollToPositionWithOffset() 滚动,但它不起作用。谁能帮帮我? 我的代码:
我开始使用 Kotlin 构建一个电影数据库应用程序,这是基于我在网上找到的教程(详见 this link。在构建电影 fragment 文件时,我注意到一个“未解析的引用:LinearLayoutM
我想要一个顶部有标题的 ListView 样式的 RecyclerView,并且我不希望标题 View 被回收,永远。 我对 RecyclerView 和 LinearLayoutManager 是全
我正在尝试新的 RecyclerView 结合 LayoutManager 和 LinearLayoutManager 的标准实现。我的目标是让 LayoutManager 在设备处于纵向时水平绘制我
我正在使用 RecyclerView 和相应的 LinearLayoutManager。我在我的应用程序的一部分中添加了一些自定义滚动功能,我将在其中翻译自定义 header 对象以及根据此项目建模的
我基本上是在尝试实现这个设计原则(from Google's Material Design): 因此,我创建了一个带有 LinearLayoutManager 的父级 RecyclerView,然后
除了这两个,我可以从 Android 库中导入其他所有内容。我正在尝试从 android.support.v7.widget 导入它们,但这不起作用,但是从 android.support.v4.wi
这似乎是一个简单的解决方案,但似乎设置 private RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; priva
目前我正在使用以下代码来检查是否应该启用 SwipeRefreshLayout。 private void laySwipeToggle() { if (mRecyclerView.getCh
我有一个项目列表。这些项目按日期排序。日期早于现在的项目(“旧”项目)在用户打开应用程序时不应该可见,但用户应该能够通过将列表滚动到顶部来查看它们。 我找到第一个带有 future 日期的项目("ne
IllegalArgumentException: LinearLayoutManager is already attached to a RecyclerView 当我尝试为我的 Recycler
我有一个 fragment ,其中有 RecyclerView 和 LinearLayoutManager,其中有 CardView 项。单击项目应滚动到顶部有一个 float 操作按钮。我已经尝试使
是否可以与 RecyclerView 中的项目重叠? 我正在尝试使用 LinearLayoutManager。 我的要求与 LinearLayoutManager 中的要求相同,只需将内部的项目从上到
我是一名优秀的程序员,十分优秀!