listview recykling dziwnej pustej przestrzeni

Mam podobny problem do tego w tym pytaniu:ListView i problem z odzyskiwaniem wierszy

Powyżej zostało rozwiązane. ale to samo rozwiązanie nie działa dla mnie.

Mam widok listy składający się z tekstów. Każdy widok tekstowy może zawierać zmienną liczbę obrazów. Otrzymuję obrazy z html.imagegetter i używam recyklingu w metodzie getview adaptera listy.

Jeśli w widoku tekstowym znajduje się jeden lub więcej obrazów, będzie on miał wysokość umożliwiającą dopasowanie jego zawartości. Gdy ten widok tekstowy zostanie poddany recyklingowi, a nowa zawartość nie wypełni zdefiniowanej wcześniej wysokości, pojawi się puste miejsce.

Problem polega na tym, że nie mogę przywrócić wysokości textview w getview, ponieważ nie wiem, jaką wysokość będzie miał następny element listy.

to jest mój widok:

public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;

    View rowView = convertView;
    if (rowView == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        rowView = inflater.inflate(resource, parent, false);
        holder = new ViewHolder();
        holder.imgAvatar = (ImageView) rowView.findViewById(R.id.imgAvatar);
        holder.textDetails = (TextView) rowView.findViewById(R.id.textDetails);
        holder.textPostTime = (TextView) rowView.findViewById(R.id.textPostTime);
        holder.textPost = (TextView) rowView.findViewById(R.id.textPost);
        rowView.setTag(holder);
    } else {
        holder = (ViewHolder) rowView.getTag();
    }

    holder.textDetails.setText(details.toString());
    holder.textPostTime.setText(x.postTime);
    holder.textPost.setText(Html.fromHtml(x.postBody, new URLImageGetter(holder.textPost, context), null, context));
    return rowView;
}

jest to układ wierszy:

<TextView
    android:ellipsize="none"
    android:autoLink="web"
    android:textColor="#000000"
    android:id="@+id/textPost"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

PROBLEM: Mechanizm recyklingu listview nie może obliczyć nowej wysokości używanych widoków zgodnie z nową zawartością. Bez recyklingu jest zbyt wolny.

questionAnswers(2)

yourAnswerToTheQuestion