我认为我不会是唯一一个有这个问题的人,虽然我无法在SO上找到任何解决方案:(
我的问题:
我有一个ListView
,其背景是由ImageLoader加载的图片。
如果我向下滚动,一切都很安静。调用getView
方法并返回新的View
并将其挂在最后View
之下。
如果我向上滚动,也会按预期调用getView
方法。但是,然后创建的View
会将ListList
向下推。
我没有向我的Adapter
添加任何项目,因此getCount()
将始终返回相同的尺寸。
我尝试了什么:
如果我向下滚动,并且图片已加载到ImageView
,我会在该图片的相应ImageView
数据中保存此Adapter
的高度。如果我向上滚动,并设置Adapter
数据的高度,我会在ImageView
方法中设置getView
的高度。请参阅以下代码:
public View getView(final int position, View convertView, ViewGroup parent) {
View vi=convertView;
final ViewHolder holder;
final Image img = data.get(position); // data always same size
if(convertView==null){
vi = inflater.inflate(R.layout.item_new_posts, null);
holder = new ViewHolder();
// ....
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
//**Try to set the right size of the ImageView before the parent view is created**
if(img.getHeight() != 0 && img.getWidth() != 0){
holder.image.getLayoutParams().height = img.getHeight();
holder.image.getLayoutParams().width = img.getWidth();
holder.image.requestLayout();
}
// ....
//**Load Image asynchronously**
imageLoader.DisplayImage(url, holder.image);
return vi;
}
但是这种方法没有效果..如果我向上滚动它仍会跳跃。
任何想法?
谢谢:)
答案 0 :(得分:0)
在加载实际图像时尝试使用占位符图像。
或
在布局中以dp设置imageview的宽度和高度