2013-07-12 127 views
0

我有一個Android(JB)應用程序中的列表視圖,其中單擊行將列表視圖替換爲另一個視圖。Android ListView在第一次滾動後重置滾動位置

按下單獨的按鈕,將列表視圖添加回活動(想法是父容器在列表視圖和單行內容之間切換)。

當我滾動到靠近底部的一行並按下它(替換列表視圖)時,會出現問題。點擊另一個按鈕以再次顯示列表視圖後,一切都很正常(包括行狀態和滾動位置)。但只要我再次嘗試滾動,它會將列表視圖重置爲頂部。之後滾動正常工作。

列表視圖的數據源根本不會改變。奇怪的是,如果我更改了平板電腦的方向,那麼第一次滾動並不會將列表視圖重置爲頂部。

我猜它與刪除視圖有關,然後加回相同的視圖(通過調用父視圖上的removeAllViews和addView來完成)。

回答

0

我不確定,但我認爲當您因某種原因調用removeAllViews時,它無法保存以前的狀態。 我不確定它是否是解決問題的最佳方式,但您可以在刪除之前保存滾動位置,並在添加視圖後再次設置它。

事情是這樣的:

int posX = listView.getScrollX(); 
//remove your view 

後:

//add your views 
listView.setScrollX(posX); 
+0

謝謝,這是什麼原因造成的問題。下面是保存滾動狀態的正確方法:http://stackoverflow.com/a/3035521/1408673 – FUR10N