精確記錄和恢復ListView滑動位置

2021-06-08 23:47:21 字數 981 閱讀 5404

工作中遇到乙個需求,對listview某一項操作後重新整理listview,但是如果直接重新整理,介面上listview從第一列開始顯示,使用者體驗不好,於是在網上搜了一些恢復listview滑動位置的方法。解決辦法如下:

//給listview設定***

backgroundlist.setonscrolllistener(scrolllistener);

private onscrolllistener scrolllistener = new onscrolllistener()

@override

public void onscrollstatechanged(abslistview view, int scrollstate)

if (arraylist != null) }};

呼叫setadapter之後恢復位置:

mylist .setselectionfromtop(scrollpos, scrolltop);

參考: 

之前在網上搜到的,有另外兩種方法

第一種:

在onscrollstatechanged裡面 

scrolledx = listview.getscrollx(); 

scrolledy = listview.getscrolly(); 

恢復時使用listview.scrollto(scrolledx, scrolledy); 

但是得到的scrolledy為0

第二種:

在onscrollstatechanged裡面

position = listview.getfirstvisibleposition(); 

用position記錄顯示在螢幕頂端的乙個item,

恢復時使用listview.setselection(position); 

但是這種方法不夠精確

最後用setselectionfromtop實現的

ListView 常用屬性記錄

android stackfrombottom true false 預設false 說明 當listview載入完畢,顯示最下面的內容,或者顯示最上面的內容。android divider null drawable android dividerheight 0px 說明 設定分割線的高度。an...

ListView 控制項使用方法記錄

1.選中一整行。a 需要設定擴充套件屬性 lvs ex fullrowselect。note 在建立時增加此屬性是無效的,必須使用 lvm setextendedlistviewstyle 訊息或者使用 clistctrl setextendedstyle 方法。使用setwindowlong應該也...

使用ListView儲存歷史輸入記錄

慣例,文章 android應用中,經常需要儲存使用者的輸入記錄,以保證使用者下次輸入時可以在歷史記錄中直接選擇可能要輸入的值,這樣就提高了使用者的體驗性!儲存使用者輸入的列表項 儲存使用者輸入的 activity sharedpreferences preferences getactivity g...