【发布时间】:2015-05-21 19:14:25
【问题描述】:
我认为我不会是唯一一个遇到这个问题的人,尽管我在 SO 上找不到任何解决方案:(
我的问题:
我有一个ListView,其中填充了由 ImageLoader 在后台加载的图像。
如果我向下滚动,一切都很安静。调用getView方法,返回一个新的View,挂在最后一个View下面。
如果我向上滚动,getView 方法也会被调用,正如预期的那样。但是随后创建的View 将我的ListList 向下推。
我没有向我的Adapter 添加任何项目,因此getCount() 将始终返回相同的大小。
我尝试了什么:
如果我向下滚动,并且图像被加载到ImageView 中,我会将这个ImageView 的高度保存在该图像的相应Adapter 数据中。如果我向上滚动,并设置了 Adapter 数据的高度,我在 getView 方法中设置了 ImageView 的高度。见以下代码:
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;
}
但是这种方法没有效果..如果我向上滚动它仍然会跳转。
有什么想法吗?
谢谢:)
【问题讨论】:
标签: android listview android-listview scroll