Я все для повторного использования просмотров в listview. Я всегда устанавливал видимость, содержимое, witdth и т. Д. все элементы управления снова в getView К сожалению, похоже, что ListView не может пересчитать высоту.Listview изменение размера (повторно) просмотров
Picture один показывает исходный пункт показал:
Picture два показывает, как элемент один визуализируется после того, как мы прокручивается в сторону и обратно в нее
Высота фон LinearLayout (черная область) сделал мне думаю, что на картинке два, Android повторно использует представление, которое просто показало намного более крупный элемент (например, второй элемент). Но почему он не перекалибрует/не перезаписывает/не перераспределяет себя (он находится в режиме «wrap_content» в своем XML) при повторном использовании в качестве представления для первого элемента, контент (текст + изображение) не такой, как heigh?
На самом деле я не уверен, что происходит. Проблема проявляется только в том случае, если у меня есть изображение в представлении. Я попытался упорядочить загрузку растрового изображения/изображения по-разному (пример кода под ним) с разными комментариями, но это, похоже, не имеет большого значения. Я действительно в затруднении здесь по причине.
override_listitem_news.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="wrap_content"
android:padding="10dip"
android:background="@android:color/black"
>
<TextView
android:id="@+id/listitem_news_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="22sp"
android:padding="5dip"
android:text="@string/newsItemTitle"/>
<TextView
android:id="@+id/listitem_news_date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="italic"
android:textSize="15sp"
android:padding="5dip"
android:text="@string/newsItemDate"/>
<TextView
android:id="@+id/listitem_news_content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="normal"
android:textSize="15sp"
android:padding="5dip"
android:autoLink="web"
android:text="@string/newsItemDesc"
android:background="@android:color/darker_gray"
/>
<ImageView
android:id="@+id/listitem_news_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Вот код, где я загрузить изображение в GetView
ViewTreeObserver vto = image.getViewTreeObserver();
vto.addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
image.getViewTreeObserver().removeGlobalOnLayoutListener(this);
image.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
SharedCode.sharedUtilScaleImage_Width(image);
}
}
);
image.setTag(data.image_file_name + data.image_file_url);
Bitmap bit = null;
bit = SharedCode.sharedGetFileFromOffline(thisActivityContext, "news", data.image_file_name, MyGetKindOfFile.ImageAsBitmap).bitmap;
if (bit != null) {
image.setImageBitmap(bit);
image.setVisibility(View.VISIBLE);
}
else {
image.setImageBitmap(null);
image.setVisibility(View.GONE);
}
image.setPadding(0, 0, 0, 0);
image.setBackgroundColor(data.backgroundColorInt);
Опубликовать XML-макет для просмотра вашего элемента. – Karakuri
@Karakuri Done :) – Tom
Вы переопределяете 'getViewTypeCount()' и 'getItemViewType()' в своем адаптере? – CommonsWare