亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

返回到ListView時維護/保存/還原滾動位置

返回到ListView時維護/保存/還原滾動位置

繁花不似錦 2019-06-06 14:53:25
返回到ListView時維護/保存/還原滾動位置我有很長的時間ListView在返回到前一個屏幕之前,用戶可以滾動。當用戶打開以下內容時ListView同樣,我希望將列表滾動到與以前相同的位置。對于如何實現這一點,有什么想法嗎?
查看完整描述

3 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

試試這個:

// save index and top positionint index = mList.getFirstVisiblePosition();View v = mList.getChildAt(0);int top = (v == null) ? 0 : 
(v.getTop() - mList.getPaddingTop());// ...// restore index and positionmList.setSelectionFromTop(index, top);

說明:

ListView.getFirstVisiblePosition()返回頂部可見列表項。但是,這一項可能會部分脫離視圖,如果您想恢復列表的確切滾動位置,則需要獲得此偏移量。所以ListView.getChildAt(0)返回View對于最重要的列表項,然后View.getTop() - mList.getPaddingTop()控件頂部返回其相對偏移量。ListView..然后,恢復ListView的滾動位置,我們調用ListView.setSelectionFromTop()使用我們想要的項的索引和一個偏移量將其頂部邊緣從ListView.


查看完整回答
反對 回復 2019-06-06
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

Parcelable state;@Overridepublic void onPause() {    
    // Save ListView state @ onPause
    Log.d(TAG, "saving listview state @ onPause");
    state = listView.onSaveInstanceState();
    super.onPause();}...@Overridepublic void onViewCreated(final View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    // Set new items
    listView.setAdapter(adapter);
    ...
    // Restore previous state (including selected item index and scroll position)
    if(state != null) {
        Log.d(TAG, "trying to restore listview state..");
        listView.onRestoreInstanceState(state);
    }}


查看完整回答
反對 回復 2019-06-06
  • 3 回答
  • 0 關注
  • 568 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號