-1

关于列表的假设(更新):

  • 不会包含超过10 个列表元素(列表元素由下面的 xml 布局定义)。
  • 每个元素的高度是未知的,因为列表元素包含一个LinearLayout最多可以有20 个子视图的元素(参见下面的 xml)。

列表元素的 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="fill_parent"
    android:orientation:"horizontal">

    <!--
        This LinearLayout is going to contain one or more 
        Views which will be added progammatically on runtime.
        The number of children views added to it depend on the 
        data to be displayed, and the only assumption that can 
        be made is that there's will be no more than 20 child 
        views for one particular instance of this LinearLayout.
    -->
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="25dp"/>

    <ImageButton
        android:layout_width="25dip"
        android:layout_height="25dip"
        android:layout_gravity="center|top"
        android:layout_marginLeft="-25dp"/>
</LinearLayout>

问题:

  • ListView将 a用于在其结构中具有如此自由度的布局(如上面的那个)并且仍然能够使用
    传入的 convertView是否有意义ListView#getView(...)
  • 作为替代方案,将所有列表元素放在外部
    LinearLayout并将其放在 a中会不会是错误的ScrollView?通过这样做,我不会获得 的缓存能力ListView,但考虑到关于列表的假设,它可能不会那么重?(见顶部)。(有关如何使这种替代外观和感觉像的任何指示ListView?我正在考虑应用标准颜色和选择器等)
4

1 回答 1

1

如果你知道你的 10 个元素中的一些是相同的,你可以使用

getItemViewType(int 位置)

确保 convertView 将匹配您的项目类型 convertView

于 2011-12-30T13:18:05.640 回答