我看到更多的人和我有同样的问题,我已经尝试了一些建议的解决方案但到目前为止没有任何工作。
我有一个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;
}
提前谢谢!
答案 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;
}