是否可以检查RecyclerView的第一项或第二项是否在用户屏幕上可见?
例如,当用户向下滚动时:
if (first item not visible to user) {
// do something
}
else if ( first item is visible){
// do something
}
我目前所做的是将一个监听器添加到我的回收器中,这样当用户向下滚动时,它会做一些事情并向上滚动.
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
mAccountLayout.setVisibility(View.GONE);
mDateLayout.setVisibility(View.GONE);
Log.d("SCROLLINGDOWN","SCROLL");
} else {
mAccountLayout.setVisibility(View.VISIBLE);
mDateLayout.setVisibility(View.VISIBLE);
Log.d("SCROLLINGUP","SCROLL");
}
}
});
但我需要检查第一项是否可见.
解决方法:
您可以在RecyclerView.LayoutManager中找到一些辅助方法,例如,如果您使用LinearLayoutManager,请检查以下方法:
int findFirstCompletelyVisibleItemPosition() // Returns the adapter position of the first fully visible view.
int findFirstVisibleItemPosition() // Returns the adapter position of the first visible view.
int findLastCompletelyVisibleItemPosition() // Returns the adapter position of the last fully visible view.
int findLastVisibleItemPosition() // Returns the adapter position of the last visible view.
请参阅完整文档here.
在你的代码中:
recyclerView.setAdapter(adapter);
final LinearLayoutManager layoutManager = new LinearLayoutManager(context);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (layoutManager.findFirstVisibleItemPosition() > 0) {
mAccountLayout.setVisibility(View.GONE);
mDateLayout.setVisibility(View.GONE);
Log.d("SCROLLINGDOWN","SCROLL");
} else {
mAccountLayout.setVisibility(View.VISIBLE);
mDateLayout.setVisibility(View.VISIBLE);
Log.d("SCROLLINGUP","SCROLL");
}
}
});
标签:android,android-recyclerview
来源: https://codeday.me/bug/20190823/1697415.html
这篇博客探讨了如何在Android中使用RecyclerView时检查其第一项是否在用户屏幕上可见。通过添加OnScrollListener到RecyclerView,并结合LinearLayoutManager的findFirstVisibleItemPosition方法,可以判断用户滚动时第一项的状态。
1886

被折叠的 条评论
为什么被折叠?



