android gridview滞后于滚动

时间:2011-08-01 23:50:06

标签: android gridview scroll

我正在编写一个具有网格视图和一些图像的应用程序,我正在使用默认的垂直滚动,因为并非所有图像都适合屏幕。我总是滚动,并且在新行的渲染上有一条新线要显示,似乎有一个滞后。

所有图像都是可绘制的,所以它不是由加载图像之类的东西造成的,至少不是明确的。那么,任何想法如何解决问题?滚动在我的atrix中滞后,应用程序应该运行的最终设备远比它差。

编辑 - 这里有一些代码:

public View getView(int position, View convertView, ViewGroup parent) {
    T item = getItem(position);
    Box box = convertView == null ? new Box(mContext) : (Box) convertView;
    onBindModel(box, item);
    return box;
}

@Override
public void onBindModel(Box box, Model item) {
    box.param.putSerializable("model", item);
    box.setDescricao(item.getNome());
    box.getModelImageView().setImageResource(item.thumbResId);
}

修改

所以,正如所建议的,只是尝试了这段代码,但仍然得到了相同的结果:

@Override
public void onBindModel(final Box box, final Model item) {
    box.param.putSerializable("model", item);
    box.setDescricao(item.getNome());

    new Thread(){
        public void run() {
            Message msg = new Message();
            msg.obj =box.getModelImageView();
            msg.arg1 =item.thumbResId; 

            mHandler.sendMessage(msg);
        }
    }.start();
}

 private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message message) {
        Bitmap bm = BitmapFactory.decodeResource(getResources(),  message.arg1);
        setImage((ImageView) message.obj,bm);
    }
};

public void setImage(ImageView imgView, Bitmap bm) {
    imgView.setImageBitmap(bm);
}

当滚动到下一行时,我得到一个挂起,然后它就会继续正常。

提前致谢

2 个答案:

答案 0 :(得分:1)

  

所有图像都是可绘制的,所以它不是由类似的东西引起的   至少,没有明确地加载图像。

事实并非如此。这项工作是在UI线程上完成的。 参考 http://developer.android.com/reference/android/widget/ImageView.html#setImageResource(int)

您可能需要考虑延迟加载图片。已经在各地广泛讨论了多种方法。谷歌吧。

答案 1 :(得分:0)

老问题,但它确实有这个诀窍:

 Glide.with(context)
            .load(stickersData[position])
            .into(imageView);

使用Glide