2011-12-23 28 views
12

Làm cách nào để duy trì vị trí cuộn của GridView (nó được lấp đầy với kết quả tìm kiếm) trong suốt quá trình định hướng lại màn hình?Duy trì vị trí cuộn của GridView qua Xoay màn hình

Tôi có GridView bên trong một Phân đoạn và khi tôi xoay màn hình, nó nhảy trở lại lên đầu danh sách.

Để làm cho nó thậm chí còn phức tạp hơn, trong chế độ ngang, Chế độ xem lưới của tôi có 3 cột .. ở chế độ dọc, nó có 2 cột.

Tôi dường như không thể tìm ra cách giữ GridView của đoạn được cuộn đến bất kỳ đâu gần vị trí của nó khi hướng màn hình thay đổi.

Trả lời

18

Bạn có thể thử này:

Ban đầu bạn phải có được vị trí di chuyển hiện tại của GridView bằng cách gọi:

int index = gridview.getFirstVisiblePosition(); 

Sau đó, bạn phải lưu giá trị này trong khi thay đổi phương hướng và khi GridView là tạo ra một lần nữa bạn phải di chuyển GridView của bạn để chỉ số này.

Tôi cho rằng điều này có thể làm việc:

gridview.smoothScrollToPosition(int index) 

Hope this helps!

+6

tôi thấy rằng, nhưng tôi cần để hỗ trợ trở lại 2.1 và vì vậy tôi không có quyền truy cập vào smoothScrollToPosition(). Tôi đang sử dụng setSelection (int position) để thay thế. getFirstVisiblePosition() là chính xác những gì tôi cần. Bây giờ tôi cảm thấy ngớ ngẩn! Cảm ơn bạn! –

+0

Không có vấn đề gì! Vui mừng đã giúp bạn! :) –

+4

Trong ứng dụng của tôi, smoothScrollToPosition không hoạt động. Nhưng setSelection hoạt động tốt. – ChangUZ

24

Bạn có thể sử dụng phương pháp sau, phương thức này sẽ hoạt động với tất cả các phiên bản Android.

Để lưu vị trí di chuyển hiện tại:

int index = gridView.getFirstVisiblePosition(); 

Sau đó, sau khi thay đổi hướng, sử dụng đoạn mã sau để thiết lập vị trí GridView để chỉ số đã lưu:

gridView.setSelection(index); 
+4

hoạt động này !!!! gridview.smoothScrollToPosition (int index) ---> sẽ không hoạt động khi có tải chậm. – krisDrOid

+0

Cùng một @krisDrOid – ChangUZ

+0

Điều đó hoạt động - cảm ơn bạn đời! –

Các vấn đề liên quan