首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android - Gridview Lag

Android - Gridview Lag
EN

Stack Overflow用户
提问于 2015-01-22 23:47:48
回答 1查看 258关注 0票数 0

我见过更多和我有同样问题的人,我也尝试了一些建议的解决方案,但到目前为止都没有奏效。

我有一个带有图像的gridView (以及下面的一个小标题),这些图像存储在内部存储器中(最初它们存储在SD卡中,但后来我更改了它,因为我认为这个错误可以解决)。

我认为我需要提高getView()方法的效率。有没有人发现导致延迟的错误?

代码语言:javascript
复制
public View getView(int position, View convertView, ViewGroup parent) {

        View v = convertView;
        ImageView picture;
        TextView name;

        if(v == null) {
            v = inflater.inflate(R.layout.grid_item, parent, false);
            v.setTag(R.id.picture, v.findViewById(R.id.picture));
            v.setTag(R.id.text, v.findViewById(R.id.text));
        }

            picture = (ImageView)v.getTag(R.id.picture);
            name = (TextView)v.getTag(R.id.text);

            Beer item = (Beer)getItem(position);

            picture.setImageBitmap(decodeScaledBitmapFromSdCard(item.photoPath, 150, 150));
            name.setText(item.name);

        return v;
    }

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2015-01-22 23:55:50

您应该使用View Holder模式。

代码语言:javascript
复制
public View getView(int position, View convertView, ViewGroup parent) {

        View v = convertView;
        DataHolder holder = null;

        if(holder == null) {
            v = inflater.inflate(R.layout.grid_item, parent, false);
            holder = new DataHolder();

            holder.name = (TextView) v.findViewById(R.id.text);
            holder.picture = (ImageView) v.findViewById(R.id.picture);
        }
        else{
            holder = (DataHolder) v.getTag();
        }
            v.setTag(holder)
holder.picture.setImageBitmap(decodeScaledBitmapFromSdCard(item.photoPath, 150, 150));
            holder.name.setText(item.name);

        return v;
    }

static class DataHolder{
        ImageView picture;
        TextView name;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28092979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档