ListView适配器,动态行高和不良行为

时间:2014-09-15 14:26:58

标签: android android-listview android-adapter android-adapterview

不知道是否有人遇到过这个问题,我不确定是否有解决方法。我有一个listview,其中包含一个绑定的复杂适配器。每行可以彼此不同。可能只有文本,图像或图像+文本。就像Facebook Timeline一样。我有3-4种可以膨胀的视图(取决于项目的类型)。主要问题是图像+文本。这是视图项目行:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
    >

<LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dp"
        android:layout_marginLeft="7dp"
        android:layout_marginRight="7dp"
        android:background="@drawable/card_background">

    <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        <ImageView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:id="@+id/post_picture"/>
        <ProgressBar
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:id="@+id/loading_bar"/>
            </FrameLayout>


    <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:maxLines="8"
            android:textColor="@android:color/black"
            android:textSize="17sp"
            android:fontFamily="sans-serif-light"
            android:ellipsize="end"
            android:id="@+id/post_message"/>

        </LinearLayout>

正如您所看到的,我没有在ImageView中放置任何内容,所以当它需要渲染时,Android会将单元格高度设置为好像没有图像。在适配器的getView方法中,我在ImageView中加载了一个图像(我使用了离子,但我也尝试使用UrlImageViewHelper,没有结果)。加载和渲染图像时,行高度会扩展以适合所有内容(我在布局上设置了wrap_content)。

这就是问题:当我向下滚动时,没有问题。当我向上滚动,Android已从内存中删除图像时,它会加载空行。重新加载和渲染图像时,行高会扩展并向下推下面的所有行。例如,如果我加载200x1080图像,效果真的很糟糕!

有没有解决方案?

0 个答案:

没有答案