この質問と同様の問題があります: ListView と行のリサイクルの問題
以上で解決です。しかし、同じ解決策は私にはうまくいきません。
テキストビューで構成されるリストビューがあります。各テキストビューには、可変数の画像を含めることができます。html.imagegetter で画像を取得しており、リスト アダプターの getview メソッドでリサイクルを使用しています。
テキストビューに 1 つまたは複数の画像がある場合、そのコンテンツに合わせて高さが設定されます。このテキストビューが再利用され、新しいコンテンツが以前に定義された高さを満たさない場合、空のスペースが表示されます。
問題は、次のリスト項目の高さが分からないため、getview で textview の高さを復元できないことです。
これは私のgetviewです:
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;
}
これは行のレイアウトです:
<TextView
android:ellipsize="none"
android:autoLink="web"
android:textColor="#000000"
android:id="@+id/textPost"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
問題:リストビューのリサイクル メカニズムは、使用されているビューの新しいコンテンツに応じて新しい高さを計算できません。リサイクルがなければ、遅すぎます。