我有一个与这个问题类似的问题:ListView and rows回收问题
以上解决。但同样的解决方案对我不起作用。
我有一个由文本视图组成的列表视图。每个文本视图可以包含可变数量的图像。我正在使用 html.imagegetter 获取图像,并且在列表适配器的 getview 方法中使用回收。
如果 textview 中有一个或多个图像,它的高度将能够适应其内容。当这个textview被回收并且新的内容没有填满之前定义的高度时,就会出现空白。
问题是我无法在 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" />
问题:列表视图回收机制无法根据新内容计算已使用视图的新高度。不回收,太慢了。