有沒有辦法在Android中從ListView獲取第一個可見視圖?如何從Android ListView獲取第一個可見視圖
我可以獲得支持適配器中第一個視圖的數據,但看起來我無法在ListView中獲得第一個視圖。
我想在滾動操作完成後更改第一個可見視圖。我知道我不應該保存對視圖的引用。
有沒有辦法在Android中從ListView獲取第一個可見視圖?如何從Android ListView獲取第一個可見視圖
我可以獲得支持適配器中第一個視圖的數據,但看起來我無法在ListView中獲得第一個視圖。
我想在滾動操作完成後更改第一個可見視圖。我知道我不應該保存對視圖的引用。
其實ListView項目只是ListView的子項。所以,第一個可見的ListView項是:
listView.getChildAt(0)
ListView中有一個功能getFirstVisiblePosition
因此要獲得第一個可見視圖,代碼爲:
listView.getChildAt(listView.getFirstVisiblePosition());
childAt()位置與getFirstVisiblePosition()返回的位置之間存在差異。 getFirstVisiblePosition的位置是我的數據適配器中的位置。 ChildAt僅考慮目前在列表視圖中可見的視圖。 – Janusz 2010-06-25 08:06:53
我喜歡這個答案,並且發現它有用於找到可以工作的東西。然而,使用childAt與適配器的位置wsill不起作用。如果使用fetFirstVisiblePosition,則必須使用getItem再次將其傳遞給適配器。所以更正確的是adapter.getItem(listview.getFirstVisiblePosition)。然而,在那種情況下,你不會像操作系統那樣提出問題。不過,謝謝你指出這一點。 – 2014-11-29 10:18:31
事實上listView.getChildAt(listView.getFirstVisiblePosition())
給人的第一個可見項目,
但它可能是一半可見列表項。
要獲得第一個完全可見的列表項,
if (listView.getChildAt(0).getTop() < 0) {
int firstCompletelyVisiblePos = listView.getFirstVisiblePosition() + 1;
}
您可以使用下面的代碼:
for (int i = 0; i <= conversationListView.getLastVisiblePosition() - conversationListView.getFirstVisiblePosition(); i++) {
View listItem = conversationListView.getChildAt(i);
}
listView.scrollBy(0,-40);
這很好用
視圖被回收。你需要什麼具體的觀點? – 2010-06-24 14:50:17
我編輯我的問題。我想在用戶滾動列表後更改視圖。 – Janusz 2010-06-24 15:06:52