Android - Gridview Lag

时间:2015-01-22 15:47:48

标签: java android gridview lag

我看到更多的人和我有同样的问题,我已经尝试了一些建议的解决方案但到目前为止没有任何工作。

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

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

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;
    }

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您应该使用View Holder模式。

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;
}