findLastCompletelyVisibleItemPosition:返回最后一个完全可见的视图的适配器位置。该位置不包括在最后一次布局传递之后分派的适配器更改。
findLastVisibleItemPosition:返回上一个可见视图的适配器位置。该位置不包括在最后一次布局传递之后分派的适配器更改。
我有16个项目。因此,当滚动到末尾时(当最后一项完全可见时),这两种方法的结果均为16。但是当我滚动到末尾但最后一项是一半可见时,findLastCompletelyVisibleItemPosition显示14,而findLastVisibleItemPosition显示15。
有人可以解释为什么它显示14吗?这两个功能的确切区别是什么?
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
RecyclerView.LayoutManager linearLayoutManager = recyclerView.getLayoutManager();
if(linearLayoutManager != null && linearLayoutManager instanceof LinearLayoutManager) {
int position = ((LinearLayoutManager) linearLayoutManager).findLastCompletelyVisibleItemPosition();
int position1 = ((LinearLayoutManager) linearLayoutManager).findLastVisibleItemPosition();
Log.d(TAG, "position: " + position);
Log.d(TAG, "position1: " + position1);
}
}
答案 0 :(得分:1)
如果您有16个项目,则由于您的最后一个位置是第15位,因此不可能返回16作为可见位置。
其次,很容易理解每种方法的命名。如果最后一个位置是第15位,并且可以看到一半,则findLastCompletelyVisibleItemPosition将返回14,而findLastVisibleItemPosition将返回15。