I managed to fix this, but I don’t understand why.
As I mentioned, I had set the layout_height of the list item layout to wrap_content (since fill_parent is meaningless here, considering that a ListView is indefinitely tall).
However, I had set the layout_height of all views inside that layout to fill_parent. The problem disappeared when setting them to wrap_content instead.
This raises two other questions:
1) What are the semantics of a view asking to fill_parent, when the parent wraps_content? Which size request takes precedence?
2) How would I ever make a view fill a list item if fill_parent apparently doesn’t work?
Thanks for your input guys.