am 7ef9b612: Merge "Fix monkey bugs in ListView" into klp-dev

* commit '7ef9b612412a2169c8c0e0b3506b06516cb012b5':
  Fix monkey bugs in ListView
This commit is contained in:
Adam Powell
2013-09-24 15:40:44 -07:00
committed by Android Git Automerger
3 changed files with 6 additions and 13 deletions

View File

@@ -674,11 +674,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
private int mLastAccessibilityScrollEventFromIndex;
private int mLastAccessibilityScrollEventToIndex;
/**
* Track if we are currently attached to a window.
*/
boolean mIsAttached;
/**
* Track the item count from the last time we handled a data change.
*/
@@ -1904,7 +1899,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
if (gainFocus && mSelectedPosition < 0 && !isInTouchMode()) {
if (!mIsAttached && mAdapter != null) {
if (!isAttachedToWindow() && mAdapter != null) {
// Data may have changed while we were detached and it's valid
// to change focus while detached. Refresh so we don't die.
mDataChanged = true;
@@ -2715,7 +2710,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mOldItemCount = mItemCount;
mItemCount = mAdapter.getCount();
}
mIsAttached = true;
}
@Override
@@ -2770,7 +2764,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
removeCallbacks(mTouchModeReset);
mTouchModeReset.run();
}
mIsAttached = false;
}
@Override
@@ -3397,7 +3390,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mPositionScroller.stop();
}
if (!mIsAttached) {
if (!isAttachedToWindow()) {
// Something isn't right.
// Since we rely on being attached to get data set change notifications,
// don't risk doing anything where we might try to resync and find things
@@ -3636,7 +3629,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mTouchMode = TOUCH_MODE_REST;
child.setPressed(false);
setPressed(false);
if (!mDataChanged) {
if (!mDataChanged && isAttachedToWindow()) {
performClick.run();
}
}
@@ -3911,7 +3904,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
mPositionScroller.stop();
}
if (!mIsAttached) {
if (!isAttachedToWindow()) {
// Something isn't right.
// Since we rely on being attached to get data set change notifications,
// don't risk doing anything where we might try to resync and find things

View File

@@ -210,7 +210,7 @@ class FastScroller {
private final Runnable mDeferStartDrag = new Runnable() {
@Override
public void run() {
if (mList.mIsAttached) {
if (mList.isAttachedToWindow()) {
beginDrag();
final float pos = getPosFromMotionEvent(mInitialTouchY);

View File

@@ -2122,7 +2122,7 @@ public class ListView extends AbsListView {
}
private boolean commonKey(int keyCode, int count, KeyEvent event) {
if (mAdapter == null || !mIsAttached) {
if (mAdapter == null || !isAttachedToWindow()) {
return false;
}