2010-08-16 30 views
3

我使用擴展BaseAdapter的SimpleAdapter創建了一個圖庫視圖。它包含的內容多於它在屏幕中可以容納的內容。getFirstVisiblePosition()在圖庫視圖中返回錯誤的值

所以我使用Gallery.getFirstVisiblePosition()Gallery.getLastVisiblePosition()來獲取第一個和最後一個可見的位置。但是,這些功能並不總是返回正確的值,特別是在通過調用mGallery.setSelection()然後調用SimpleAdapter.notifyDataChanged()來設置所選位置之後。大多數情況下,即使第一個元素不可見,getFirstVisiblePosition()也會返回0。

另請注意, Gallery中的可見項目在縱向和橫向模式下不同。 getFirstVisiblePosition()返回的值在橫向上看起來正確,但在縱向模式下返回錯誤。

任何人有任何想法/想法?

謝謝!

+0

[getLastVisiblePosition returns -1]的可能重複(http://stackoverflow.com/questions/4036676/getlastvisibleposition-returning-1) – grebulon 2016-09-18 14:42:02

回答

3

第一個可見位置只有在佈局後纔會更新。您無法立即調用notifyDatasetChanged()並立即獲取第一個可見位置,您必須等待下一個佈局傳遞。

+0

感謝您的快速回復Romain!但是我們不是馬上獲得第一個可見的位置,而是等到下一個佈局通過。可能我應該添加一些更多的實現細節。 我將照片逐個添加到圖庫中。添加圖像後,我會調用Gallery.setSelection()方法,以便最後添加的圖像始終可見。 添加圖像後,我在SimpleAdapter中調用notifydataChanged()。所以我的問題是通過notifyDataChanged()調用Gallery中的哪個偵聽器?它似乎沒有調用onItemSelectedListener,並且似乎沒有關於此的文檔。 – kriver 2010-08-16 20:05:12

+1

以及我如何知道人力資源管理安卓已決定進行新版佈局? – Poutrathor 2014-09-19 14:50:51