2011-05-12 57 views
0

我开始使用Android LayoutInflater,我需要一些帮助。在每行中使用不同数量的ImageView来填充ListView

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

<?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中填充有通过膨胀另一XML这样生成各行的ArrayAdapter:

<?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

+0

你能提供某种样机或类似的东西,你真的想要实现?我们会更容易理解。 – 2011-05-12 09:06:49

+0

是的,[这里是一个示例](http://tinypic.com/r/2s9yniw/7)由代码制作。我想用XML布局来做同样的事情。 – Oskarbi 2011-05-12 09:52:26

回答

0

你只需要包括一些在每一行的XML布局图像,和这些的可见性设置为GONE时你不再需要它们(你可以在一个布局XML文件中放置一个图像,然后在你的行布局文件中输入include这3次)。

您可以通过为每行添加图像布局XML文件多次,然后将其添加到行视图来完成此操作(但是,如果您第一次只添加了2张图像,这会给回收带来问题下一行需要3);但从我记得你不能添加虚拟内容到适配器行或你会得到一个异常(不完全确定,所以试试,如果有疑问的话)。

+0

谢谢! 'GONE'解决方案可能会工作,但我不想修复布局中ImageView的数量,因为最初没有一个行可以拥有的最大数量的图像。另一种解决方案听起来有点干净,我会试试看。 – Oskarbi 2011-05-12 12:32:54

+0

最后,我为ImageView创建了一个分离的XML,然后将它充气到需要添加到每一行的图标的次数。谢谢! – Oskarbi 2011-05-16 07:12:06

0

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