为什么RecyclerView.getChildAt(i)和Recycler.getLayoutManager()。getChildAt(i)返回不同的视图

时间:2016-06-27 08:40:02

标签: android android-layout android-recyclerview

我有一个包含3个项目的水平RecyclerView。 我在我的recyclerView添加了一个位置1的项目,所以现在我有一个带有4个项目的recyclerView。

当我调用RecyclerView.getChildAt(1)时,它返回位置0而不是1的视图。

当我调用RecyclerView.getLayoutManager()。getChildAt(1)时,它返回位置1的视图。

为什么会这样?是否可以重置索引,所以当我调用RecyclerView.getChildAt(1)时,它将返回索引1处的项而不是位置0处的项。

2 个答案:

答案 0 :(得分:0)

小心。

RecyclerView.getChildAt(1)引用ViewGroup.getChildAt()

https://developer.android.com/reference/android/view/ViewGroup.html#getChildAt(int)

RecyclerView.getLayoutManager()。getChildAt(1)有不同的行为。

答案 1 :(得分:0)

RecyclerView.getChildAt(int position)获取可见区域的childView,例如,屏幕可以容纳三个itemViews,如果你调用RecyclerView.getChildAt(2),返回的是第二个视图可见区域,但不是适配器的第二个视图,只调用layoutManager.getChildAt(2)可以返回位置2的视图。