【问题标题】:Inflating a ListView with different number of ImageViews in each row用每行中不同数量的 ImageView 膨胀 ListView
【发布时间】:2011-05-12 08:56:54
【问题描述】:

我开始使用 Android LayoutInflater,我需要一些帮助。

我有一个 ListActivity,它使用以下 XML 中定义的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>

这个 ListView 填充了一个 ArrayAdapter,它通过像这样膨胀另一个 XML 来生成每一行:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip"
    >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="fill_parent"
        >
        <TextView
            android:id="@+id/item_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:textSize="20dip"
            android:textColor="#FFF"
        />
        <ImageView
            android:id="@+id/item_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginRight="6dip"
            android:src="@drawable/example_icon"
        />
    </LinearLayout>
</LinearLayout>

这工作正常,但现在我想为每个项目显示可变数量的图标(因此,ListView 的每一行在 TextView 下可能有不同数量的 ImageView)。

也许我必须为图标列表定义另一个 XML 并以某种方式从嵌套布局构建 ListView?我不知道有什么更好的方法来做到这一点。有什么建议吗?

谢谢!

编辑:这是我尝试做的一个例子:http://tinypic.com/r/2s9yniw/7

【问题讨论】:

  • 您能否提供某种模型或类似的东西,您究竟想要实现什么?我们会更容易理解。
  • 是的,here is a sample 由代码生成。我想对 XML 布局做同样的事情。

标签: android android-layout android-xml android-inflate


【解决方案1】:

您只需在每行的 XML 布局中包含一些图像,并在不再需要它们时将它们的可见性设置为 GONE(您可以将图像放在一个布局 XML 文件中,然后然后 include 在您的行布局文件中重复 3 次)。

您可以通过将图像布局 XML 文件按需要对每一行进行多次膨胀,然后将其添加到行视图来实现(但如果您第一次只添加 2 张图像,则会出现回收问题,并且下一行需要 3);但据我所知,您不能将膨胀的内容添加到 Adapter 行,否则会出现异常(不完全确定,如果有疑问,请尝试一下)。

【讨论】:

  • 谢谢! GONE 解决方案可能会起作用,但我不想修复布局中的 ImageView 数量,因为最初没有一行可以拥有的最大图像数量。另一个解决方案听起来更干净一些,我会尝试一下。
  • 最后,我为 ImageView 创建了一个单独的 XML,然后根据需要添加到每一行的图标对其进行多次膨胀。谢谢!
【解决方案2】:

在特定行中,您可以将图像视图放在该行的文本视图下方,当您不需要显示它们时,您可以通过将可见性设置为 GONE 来隐藏它。

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多