我见过更多和我有同样问题的人,我也尝试了一些建议的解决方案,但到目前为止都没有奏效。
我有一个带有图像的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;
}提前谢谢你!
发布于 2015-01-22 23:55:50
您应该使用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;
}https://stackoverflow.com/questions/28092979
复制相似问题