- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 nestedScrollView
中有一个 recyclerView
。我知道这是一种不好的做法,但在某些情况下,我只能以这种方式处理。
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedScroll"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="1"
tools:listitem="@layout/item_favorite_tournament"
tools:visibility="visible" />
</androidx.core.widget.NestedScrollView>
这是我的代码。我将向您展示滚动部分,我需要在其中获取 firstVisibleItemPosition
。但它返回 0。
private void initList(RecyclerView recycler, View labelNoResults) {
recycler.setAdapter(mAdapter);
recycler.setHasFixedSize(true);
mListLayoutManager = Objects.requireNonNull((LinearLayoutManager) recycler.getLayoutManager());
recycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
final int p = mListLayoutManager.findFirstVisibleItemPosition();
Log.d("Tag_1", "Position: " + p);
}
});
}
我认为问题出在nestedScrollView
。那么如何从 recyclerView
中获取 visibleItemPosition 呢?谢谢。
最佳答案
解决此问题的最简单方法是将 NestedScrollView
替换为简单的 ScrollView
。这当然会改变布局的行为,但它会向您显示正确的位置。
在 NestedScrollView
的情况下,findFirstVisibleItemPosition()
总是返回 0
而 findLastVisibleItemPosition()
总是返回最后一个RecyclerView
中的项目,无论它们是否对用户可见。发生这种情况是因为放置在 NestedScrollView
中的 RecyclerView
表现得像 ListView
而没有进行任何回收。这意味着所有项目都同时可见,因为所有项目都同时绑定(bind)。
关于java - findFirstVisibleItemPosition() 在 nestedScrollView 中返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61546309/
我想获取RecyclerView第一个可见的项目位置。对于 RecyclerView 的 LayountManager,我使用 LinearLayoutManager。为了获取 RecyclerVie
我正在尝试为回收站 View 上的无限滚动编写代码。这是给我一个编译器错误的 fragment : @Override public void onScrolled(Recyc
我在这个问题上苦苦挣扎了很长时间,我试图用 recyclerview 替换我的 ListView ,我的 ListView 看起来像这样:- 现在当我打电话的时候 view.getFirstVisi
我正在尝试做这样的事情: RecyclerAdapter recyclerAdapter; LinearLayoutManager recyclerManager; //set items.... r
我有这个代码: mRecycleView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override pub
我在 nestedScrollView 中有一个 recyclerView。我知道这是一种不好的做法,但在某些情况下,我只能以这种方式处理。 这是我的代码。我将向您展示滚动部分,
这是我想在方向更改和 Activity 恢复时保留 recyclerview 滚动位置的代码。问题出在我的日志中,我总是得到-1。我哪里错了? void resetViews() { recy
我是一名优秀的程序员,十分优秀!