Jumpy ListView如果向上滚动

时间:2015-05-21 19:14:25

标签: android listview android-listview scroll

我认为我不会是唯一一个有这个问题的人,虽然我无法在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;
} 

但是这种方法没有效果..如果我向上滚动它仍会跳跃。

任何想法?

谢谢:)

1 个答案:

答案 0 :(得分:0)

在加载实际图像时尝试使用占位符图像。

在布局中以dp设置imageview的宽度和高度