use of android.util.LongSparseArray in project android_frameworks_base by crdroidandroid.
the class AbsListView method onSaveInstanceState.
@Override
public Parcelable onSaveInstanceState() {
/*
* This doesn't really make sense as the place to dismiss the
* popups, but there don't seem to be any other useful hooks
* that happen early enough to keep from getting complaints
* about having leaked the window.
*/
dismissPopup();
Parcelable superState = super.onSaveInstanceState();
SavedState ss = new SavedState(superState);
if (mPendingSync != null) {
// Just keep what we last restored.
ss.selectedId = mPendingSync.selectedId;
ss.firstId = mPendingSync.firstId;
ss.viewTop = mPendingSync.viewTop;
ss.position = mPendingSync.position;
ss.height = mPendingSync.height;
ss.filter = mPendingSync.filter;
ss.inActionMode = mPendingSync.inActionMode;
ss.checkedItemCount = mPendingSync.checkedItemCount;
ss.checkState = mPendingSync.checkState;
ss.checkIdState = mPendingSync.checkIdState;
return ss;
}
boolean haveChildren = getChildCount() > 0 && mItemCount > 0;
long selectedId = getSelectedItemId();
ss.selectedId = selectedId;
ss.height = getHeight();
if (selectedId >= 0) {
// Remember the selection
ss.viewTop = mSelectedTop;
ss.position = getSelectedItemPosition();
ss.firstId = INVALID_POSITION;
} else {
if (haveChildren && mFirstPosition > 0) {
// Remember the position of the first child.
// We only do this if we are not currently at the top of
// the list, for two reasons:
// (1) The list may be in the process of becoming empty, in
// which case mItemCount may not be 0, but if we try to
// ask for any information about position 0 we will crash.
// (2) Being "at the top" seems like a special case, anyway,
// and the user wouldn't expect to end up somewhere else when
// they revisit the list even if its content has changed.
View v = getChildAt(0);
ss.viewTop = v.getTop();
int firstPos = mFirstPosition;
if (firstPos >= mItemCount) {
firstPos = mItemCount - 1;
}
ss.position = firstPos;
ss.firstId = mAdapter.getItemId(firstPos);
} else {
ss.viewTop = 0;
ss.firstId = INVALID_POSITION;
ss.position = 0;
}
}
ss.filter = null;
if (mFiltered) {
final EditText textFilter = mTextFilter;
if (textFilter != null) {
Editable filterText = textFilter.getText();
if (filterText != null) {
ss.filter = filterText.toString();
}
}
}
ss.inActionMode = mChoiceMode == CHOICE_MODE_MULTIPLE_MODAL && mChoiceActionMode != null;
if (mCheckStates != null) {
ss.checkState = mCheckStates.clone();
}
if (mCheckedIdStates != null) {
final LongSparseArray<Integer> idState = new LongSparseArray<Integer>();
final int count = mCheckedIdStates.size();
for (int i = 0; i < count; i++) {
idState.put(mCheckedIdStates.keyAt(i), mCheckedIdStates.valueAt(i));
}
ss.checkIdState = idState;
}
ss.checkedItemCount = mCheckedItemCount;
if (mRemoteAdapter != null) {
mRemoteAdapter.saveRemoteViewsCache();
}
return ss;
}
use of android.util.LongSparseArray in project android_frameworks_base by crdroidandroid.
the class KeySetUtils method getKeySetRefCount.
public static int getKeySetRefCount(KeySetManagerService ksms, long keysetId) throws NoSuchFieldException, IllegalAccessException {
Field ksField = ksms.getClass().getDeclaredField("mKeySets");
ksField.setAccessible(true);
LongSparseArray<KeySetHandle> mKeySets = (LongSparseArray<KeySetHandle>) ksField.get(ksms);
KeySetHandle ksh = mKeySets.get(keysetId);
if (ksh == null) {
return 0;
} else {
return ksh.getRefCountLPr();
}
}
use of android.util.LongSparseArray in project android_frameworks_base by crdroidandroid.
the class KeySetUtils method getPubKeyRefCount.
public static int getPubKeyRefCount(KeySetManagerService ksms, long pkId) throws NoSuchFieldException, IllegalAccessException {
Field pkField = ksms.getClass().getDeclaredField("mPublicKeys");
pkField.setAccessible(true);
LongSparseArray<KeySetManagerService.PublicKeyHandle> mPublicKeys = (LongSparseArray<KeySetManagerService.PublicKeyHandle>) pkField.get(ksms);
KeySetManagerService.PublicKeyHandle pkh = mPublicKeys.get(pkId);
if (pkh == null) {
return 0;
} else {
return pkh.getRefCountLPr();
}
}
Aggregations