不知道是否有人遇到过这个问题,我不确定是否有解决方法。我有一个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图像,效果真的很糟糕!
有没有解决方案?