android expandablelist 自动滚动,在ExpandableListView中,如何保留滚动位置_android_开发99编程知识库...
在一些實驗之后我做了一個滿意的解決,它還保留了很好的滾動位置頂部可見項。
事實上,三種不同部分的信息需要保存和恢復: 狀態( e .g列表。 其中組被展開),第一個可見項的索引和優良滾動位置。
不幸的是,似乎只有第一個保存由onSaveInstanceState可展開列表視圖的方法,所以其他兩個需要單獨存儲。 這不同于非可展開列表視圖,其中,看來在onSaveInstanceState方法保存所需要的所有信息正確的恢復狀態和位置列表( 對于這個主題,參看 Scroll到中的某一位置listView ) 。?
下面是代碼段,之上ExpandableListActivity派生類:private static final String LIST_STATE_KEY = "listState";
private static final String LIST_POSITION_KEY = "listPosition";
private static final String ITEM_POSITION_KEY = "itemPosition";
private Parcelable mListState = null;
private int mListPosition = 0;
private int mItemPosition = 0;
然后,一些繼承自:protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
// Retrieve list state and list/item positions
mListState = state.getParcelable(LIST_STATE_KEY);
mListPosition = state.getInt(LIST_POSITION_KEY);
mItemPosition = state.getInt(ITEM_POSITION_KEY);
}
protected void onResume() {
super.onResume();
// Load data from DB and put it onto the list
loadData();
// Restore list state and list/item positions
ExpandableListView listView = getExpandableListView();
if (mListState != null)
listView.onRestoreInstanceState(mListState);
listView.setSelectionFromTop(mListPosition, mItemPosition);
}
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
// Save list state
ExpandableListView listView = getExpandableListView();
mListState = listView.onSaveInstanceState();
state.putParcelable(LIST_STATE_KEY, mListState);
// Save position of first visible item
mListPosition = listView.getFirstVisiblePosition();
state.putInt(LIST_POSITION_KEY, mListPosition);
// Save scroll position of item
View itemView = listView.getChildAt(0);
mItemPosition = itemView == null ? 0 : itemView.getTop();
state.putInt(ITEM_POSITION_KEY, mItemPosition);
}
它也能在我Froyo設備。
總結
以上是生活随笔為你收集整理的android expandablelist 自动滚动,在ExpandableListView中,如何保留滚动位置_android_开发99编程知识库...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 借呗一万一个月利息多少
- 下一篇: CF手游神罚套装在哪里获取 CF手游神罚