am 86e0d95d: Merge "Reattach header view after DPAD scroll."
* commit '86e0d95de1007d339af467c1484b09878ee528fc': Reattach header view after DPAD scroll.
This commit is contained in:
@@ -2981,11 +2981,9 @@ public class ListView extends AbsListView {
|
||||
while (first.getBottom() < listTop) {
|
||||
AbsListView.LayoutParams layoutParams = (LayoutParams) first.getLayoutParams();
|
||||
if (recycleBin.shouldRecycleViewType(layoutParams.viewType)) {
|
||||
detachViewFromParent(first);
|
||||
recycleBin.addScrapView(first, mFirstPosition);
|
||||
} else {
|
||||
removeViewInLayout(first);
|
||||
}
|
||||
detachViewFromParent(first);
|
||||
first = getChildAt(0);
|
||||
mFirstPosition++;
|
||||
}
|
||||
@@ -3012,11 +3010,9 @@ public class ListView extends AbsListView {
|
||||
while (last.getTop() > listBottom) {
|
||||
AbsListView.LayoutParams layoutParams = (LayoutParams) last.getLayoutParams();
|
||||
if (recycleBin.shouldRecycleViewType(layoutParams.viewType)) {
|
||||
detachViewFromParent(last);
|
||||
recycleBin.addScrapView(last, mFirstPosition+lastIndex);
|
||||
} else {
|
||||
removeViewInLayout(last);
|
||||
}
|
||||
detachViewFromParent(last);
|
||||
last = getChildAt(--lastIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.test.TouchUtils;
|
||||
import android.test.suitebuilder.annotation.LargeTest;
|
||||
import android.test.suitebuilder.annotation.MediumTest;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.listview.ListWithEditTextHeader;
|
||||
@@ -63,4 +64,22 @@ public class ListWithEditTextHeaderTest extends ActivityInstrumentationTestCase2
|
||||
assertTrue("header does not have focus", mListView.getChildAt(0).isFocused());
|
||||
assertEquals("something is selected", AbsListView.INVALID_POSITION, mListView.getSelectedItemPosition());
|
||||
}
|
||||
|
||||
@LargeTest
|
||||
public void testScrollingDoesNotDetachHeaderViewFromWindow() {
|
||||
View header = mListView.getChildAt(0);
|
||||
assertNotNull("header is not attached to a window (?!)", header.getWindowToken());
|
||||
|
||||
// Scroll header off the screen and back onto the screen
|
||||
int numItemsOnScreen = mListView.getChildCount();
|
||||
for (int i = 0; i < numItemsOnScreen; i++) {
|
||||
sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
|
||||
}
|
||||
for (int i = 0; i < numItemsOnScreen; i++) {
|
||||
sendKeys(KeyEvent.KEYCODE_DPAD_UP);
|
||||
}
|
||||
|
||||
// Make sure the header was not accidentally left detached from its window
|
||||
assertNotNull("header has lost its window", header.getWindowToken());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user