當顯示PopupWindow並且滾動ListView以使錨定項不在窗口中時,該項目的視圖被適配器回收。然後PopupWindow開始在屏幕上跳躍,因爲它不知道其原始錨點位於何處。單擊ListView項目時顯示下拉PopupWindow,然後滾動ListView?
有沒有正確的方法來解決這個問題?
當顯示PopupWindow並且滾動ListView以使錨定項不在窗口中時,該項目的視圖被適配器回收。然後PopupWindow開始在屏幕上跳躍,因爲它不知道其原始錨點位於何處。單擊ListView項目時顯示下拉PopupWindow,然後滾動ListView?
有沒有正確的方法來解決這個問題?
一種可能的方案是如下:
Adapter.getView()
返回的視圖。在顯示PopupWindow
作爲下拉列表時,將標誌存儲在祖父母的標籤中。還存儲對此gandparent的引用以及所選項目標識。Adapter.getView()
中,當請求的項目標識等於選定的項目標識時,請使用PopupWindow.update()
將彈出窗口附加到新視圖。從舊祖父母刪除標籤並更新祖父母引用。Adapter.getView()
如果您得到convertView
有標記標記,並且請求的項目標識與選定的項目標識不同,請使用PopupWindow.update()
從祖父項中取消附加彈出窗口。設置祖父母爲null
。這有點複雜,所以我還沒有嘗試過,但它應該工作,我寫在這裏以防萬一有人感興趣。
理想情況下,我認爲顯示PopupWindow不是正確的解決方案。
無論如何,如果你已經有了這個,列表滾動應該關閉PopupWindow,因爲保持它不合理,因爲你已經滾動了列表。
我想在這種情況下發生的情況是,彈出窗口粘貼到正確的邊框,並且如果項目向後滾動,彈出窗口將重新錨定到該窗口。這是實際發生的事情,直到我的項目視圖得到回收。 –