1

所以我有这个:

...<!--Stuff above-->
<ListView 
     android:id="@+id/reminders_list"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"></ListView>
...<!--More stuff below-->

我的问题是当我尝试添加更多行时它不起作用,因为如果没有更多空间,适配器不会添加更多视图。至少在这种情况下。这意味着我需要动态调整它的大小。问题是如何做到这一点?如果除了调整大小之外还有其他可能,我宁愿这样做。提前致谢。

4

2 回答 2

5

问题出在你的android:layout_height="wrap_content"

将高度设置为 wrap_content 将仅显示前三行,其余行将被忽略。尝试使其成为android:layout_height="fill_parent"

正如Romain Guy(曾在 UI 工具包上工作的 Google 工程师)在他的帖子中所说

通过将宽度设置为 wrap_content,您是在告诉 ListView 与最宽的子视图一样宽。因此,ListView 必须测量其项目并获取它必须在适配器上调用 getView() 的项目。这可能会发生多次,具体取决于布局传递的数量、父布局的行为等。

因此,如果您将 ListView 的布局宽度或布局高度设置为 wrap_content,ListView 将尝试测量附加到它的每个视图 - 这绝对不是您想要的。

请记住:避免始终为 ListViews 或 GridViews 设置 wrap_content,有关更多详细信息,请参阅此Google I/O 视频谈论 listview 的世界

将行动态添加到列表视图 Link_1

将行动态添加到列表视图 Link_2

将行动态添加到列表视图 Link_3

将行动态添加到列表视图 Link_4

于 2012-07-10T04:57:01.637 回答
2

当向 List Adapter 添加元素时,您需要调用它的notifyDataSetChanged()成员函数来通知任何附加的观察者(例如 ListView),数据已更改,并将导致其刷新。

于 2012-07-10T04:59:46.057 回答