1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-11-11 20:15:03 -05:00

Work around a bug in ListView

This commit is contained in:
cketti 2013-03-18 22:56:56 +01:00
parent 94b5758eea
commit aff9bec92b

View File

@ -1,6 +1,7 @@
package com.fsck.k9.view;
import android.content.Context;
import android.graphics.Canvas;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.widget.ListView;
@ -28,6 +29,31 @@ public class K9PullToRefreshListView extends PullToRefreshListView {
*/
layoutChildren();
}
@Override
protected void dispatchDraw(Canvas canvas) {
if (getAdapter() != null) {
int count = getChildCount();
int itemCount = getAdapter().getCount();
/*
* 2013-03-18 - cketti
*
* Work around a bug in ListView (?) that leads to a crash deep inside the
* framework code.
* I didn't track down the exact cause of this. My best guess is that we change
* the data (remove items) while the ListView isn't visible. Probably because
* the view is hidden, layoutChildren() is never called and when this method
* runs the layout contains more item views than the adapter contains elements
* and bad things(tm) happen.
*/
if (itemCount < count) {
layoutChildren();
}
}
super.dispatchDraw(canvas);
}
};
}
}