簡體   English   中英

在Android中保存ListView狀態

[英]Saving the ListView state in android

我的主頁上有一個ListView( MainActivity.java ),當用戶返回主頁時,我想保持ListView的位置(如果它向上滾動,我想顯示確切的ListView位置)。

由於當用戶單擊列表項時MainActivity轉到onPause()-> onStop()方法,因此我將ListView的狀態保存在onPause()中。 為了獲得返回的Parcelable值,我使用了一個名為state的全局變量。

state = list.onSaveInstanceState(); //line 1

當用戶返回MainActivity()時,它將經歷onStart(),因此我將保存的狀態保存在onStart()中。

if (state != null) {
        //set adapter to listview
        list.setAdapter(myAdapter);
        //Restore previous state
        list.onRestoreInstanceState(state);
}

問題是第1行沒有返回任何狀態(它給出一個空值)。 如何解決這個問題?

謝謝。

我用這個:

Parcelable state = listView.onSaveInstanceState();

在添加適配器和此之前:

listView.onRestoreInstanceState(state);

剛設置好適配器后,我得到了您想要的結果。 試試看

要獲取listview的當前位置,您必須實現OnScrollListener並使用listview設置偵聽器,例如,

listView.setOnScrollListener(this);

然后,在onScroll方法中,您可以做您的工作

@Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int totalVisibleItem, int totalItemInList) {
    // TODO Auto-generated method stub
            // here you can save listview's scroll state
            // you can see methods parameters
}

當您回到主要活動時,可以使用listview的setSelection方法,例如

listView.setSelection(firstVisibleItem);

我希望這就是你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM