【问题标题】:Adding multiple views to a listview将多个视图添加到列表视图
【发布时间】:2010-06-15 22:29:08
【问题描述】:

我尝试使用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));
 }

【问题讨论】:

    标签: android user-interface android-listview


    【解决方案1】:

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

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

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

    【讨论】:

    • 我明白,但它们是相同的视图类型,列表视图不应该知道我给它的视图里面是什么——只是它应该显示我给它的视图。你知道我的意思吗?
    • 确实如此,在 Hello ListView 示例中,所有视图的类型都是 list_item。你没有说你的观点是什么,但你应该能够以那个例子作为起点,并用你的特定观点替换 list_item 。你试过了吗?
    • 我做到了,我能够让它工作。非常感谢您的帮助!
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多