我已經構建了一個基本界面,該界面由RecyclerView內的CardView列表組成。當添加一張卡片時,我需要知道它是否可以在屏幕上看到。確定項目是否在RecyclerView上可見
我想通過使用佈局管理器的findLastVisibleItemPosition()方法獲得此,但它似乎返回結果一個項目比預期少。例如,如果我有一張可見的卡,findLastVisibleItemPosition()返回-1(我期望可見卡的索引將爲0)。
我的簡化核心方法如下:當添加第一項
回程:
Items size = 1, Last Visible Item = -1
返回當加入第二項:
Items size = 2, Last Visible Item = 0
Items size = 2, Last Visible Item = 0
返回時第三item added:
Items size = 3, Last Visible Item = 0
Items size = 3, Last Visible Item = 1
Items size = 3, Last Visible Item = 1
在所有情況下,所有項目都可見(我可以在屏幕上顯示7個可見項目)。
有人能幫我理解findLastVisibleItemPosition()的返回結果,並建議如何在添加它時在屏幕上顯示卡片是否可見?
編輯: 我要澄清的是我真正的目標是要知道,如果一個項目是可見的,當我添加它(使用我的addItem()方法)。如果在addItem()方法內部有一個簡單的方法,那就更好了。
你有試過findLastCompletelyVisibleItemPosition()? – Nanoc
是的,對於上述示例具有相同的結果(即添加3個項目,因爲它們都完全可見)。 – Ratty
根據文檔,-1值與NO_POSITION常量匹配http://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager.html#findLastCompletelyVisibleItemPosition%28%29 – Nanoc