Merge change 691 into donut
* changes: Fixes 1819406. Take a ListView, add headers/footers, set the adapter after at least one layout pass, and the headers/footers don't know they have a parent anymore. Which causes a lot of trouble, like drawing not happening.
This commit is contained in:
@@ -460,10 +460,30 @@ public class ListView extends AbsListView {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
void resetList() {
|
void resetList() {
|
||||||
|
// The parent's resetList() will remove all views from the layout so we need to
|
||||||
|
// cleanup the state of our footers and headers
|
||||||
|
clearRecycledState(mHeaderViewInfos);
|
||||||
|
clearRecycledState(mFooterViewInfos);
|
||||||
|
|
||||||
super.resetList();
|
super.resetList();
|
||||||
|
|
||||||
mLayoutMode = LAYOUT_NORMAL;
|
mLayoutMode = LAYOUT_NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void clearRecycledState(ArrayList<FixedViewInfo> infos) {
|
||||||
|
if (infos != null) {
|
||||||
|
final int count = infos.size();
|
||||||
|
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
final View child = infos.get(i).view;
|
||||||
|
final LayoutParams p = (LayoutParams) child.getLayoutParams();
|
||||||
|
if (p != null) {
|
||||||
|
p.recycledHeaderFooter = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Whether the list needs to show the top fading edge
|
* @return Whether the list needs to show the top fading edge
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user