[英]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.