@Override public Parcelable onSaveInstanceState() { ListSavedState listState = (ListSavedState) super.onSaveInstanceState(); GridListSavedState ss = new GridListSavedState(listState.getSuperState()); // from the list state ss.selectedId = listState.selectedId; ss.firstId = listState.firstId; ss.viewTop = listState.viewTop; ss.position = listState.position; ss.height = listState.height; // our state boolean haveChildren = getChildCount() > 0 && getCount() > 0; if (haveChildren && mFirstPosition > 0) { ss.columnCount = mColumnCount; ss.columnTops = mColumnTops; ss.positionData = mPositionData; } else { ss.columnCount = mColumnCount >= 0 ? mColumnCount : 0; ss.columnTops = new int[ss.columnCount]; ss.positionData = new SparseArray<Object>(); } return ss; }
@SuppressWarnings("unchecked") @Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); out.writeInt(columnCount); out.writeIntArray(columnTops); out.writeSparseArray(positionData); }