0

我尝试使用这种工厂将这些视图添加到列表视图, 但每次我尝试将视图添加到 ListActivity 时,它什么都没有。我究竟做错了什么?我像这样设置我的列表视图:

 List<View> views = new ArrayList<View>();
 for(int x =0;x<tagg_views.size();x++){
      lv.addHeaderView(views.get(x));
 }
4

3 回答 3

1

看起来您正在尝试向您的 ListView 添加 x 个标题。那没有意义。

ListView 应该包含 x 个相同视图的副本,每行具有不同的信息。

Hello ListView给出了正确使用 ListView 的一个很好的例子。

于 2010-06-15T22:53:05.343 回答
1

您为什么要自己将视图添加到列表中?我强烈建议对列表使用任何适当的适配器。适配器将在用户滚动时处理视图的创建和回收等。如果您使用适配器,不鼓励自己保存对视图的引用,就像您在视图列表中所做的那样。

您正在使用的addHeaderView方法是针对列表的一个单独的标题,该标题始终出现在列表的顶部。这意味着在循环中调用它不会有合理的结果。

查看 Mayra 提到的helloListView示例,了解 android 中的列表是如何工作的。要了解自定义 listadapter 的工作原理,请查看本教程,尽管代码格式错误,但看起来很有希望。

于 2010-06-16T08:45:13.147 回答
1

ListView 与 Adapter 链接。Adapter负责ListView中显示的数据。考虑到内部 ListView 创建了一个项目池(或为您的案例中可以显示的每种类型的项目创建一个池)。

为此,您的适配器需要实现以下方法:

  • int getItemViewType(int position):获取将由 getView(int, View, ViewGroup) 为指定项目创建的 View 的类型。所以你需要识别你的类型。
  • int getViewTypeCount():返回将由 getView(int, View, ViewGroup) 创建的 View 的类型数。这用于为每种类型的项目创建一个池。
于 2010-06-16T10:02:28.077 回答