将多个视图添加到列表视图

时间:2010-06-15 22:29:09

标签: android user-interface android-listview

我尝试使用this kind of factory将这些视图添加到列表视图,但每次我尝试将视图添加到ListActivity时,它都没有任何结果。我究竟做错了什么?我设置列表视图如下:

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

您正在使用的addHeaderView方法是将一个标题添加到列表中,该列表始终显示在列表顶部。这意味着在循环中调用它将没有合理的结果。

查看Mayra提到的helloListView示例,了解android中的列表是如何工作的。要查看自定义listadapter如何工作,看看这个tutorial看起来很有希望尽管代码格式不好。

答案 2 :(得分:1)

ListView与和链接器链接。适配器负责ListView中显示的数据。考虑到内部ListView创建了一个itmes池(或者可以在你的情况下显示的每种类型的项目的池)。

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

  • int getItemViewType(int position):获取将由getView(int,View,ViewGroup)为指定项创建的View类型。所以你需要识别你的类型。
  • int getViewTypeCount():返回将由getView(int,View,ViewGroup)创建的视图类型的数量。这用于为每种类型的项创建池。