Problem is with your android:layout_height="wrap_content"
Setting height as wrap_content will shows only first three rows rest will be ignored. Try to make it as android:layout_height="fill_parent"
As Romain Guy (Google Engineer workd on UI toolkit) Said in his post
By setting the width to wrap_contentyou are telling ListView to be as wide as the widest of its children. ListView must therefore measure its items and to get the items it has to call getView() on the Adapter. This may happen several times depending on the number of layout passes, the behavior of the parent layout, etc.
So if you set the layout width or layout height of your ListView to wrap_content the ListView will try to measure every single view that is attached to it - which is definitely not what you want.
Keep in mind: avoid setting wrap_content for ListViews or GridViews at all times, for more details see this Google I/O video talking about the world of listview
Dynamically Adding rows to List View Link_1
Dynamically Adding rows to List View Link_2
Dynamically Adding rows to List View Link_3
Dynamically Adding rows to List View Link_4