W systemie Android 4.1 a, dla mnie, pozornie dziwny błąd występuje w naszej aplikacji. W aplikacji niestandardowy adapter rozszerzający BaseAdapter jest dołączany do widżetu Galeria. Podczas przewijania szybko od lewej do prawej i odwrotnie dostaję FC z komunikatem wyjątek:"Nie można narysować ponownie map bitowych" podczas wyświetlania bitmap w Galerii dołączonej do adaptera
java.lang.IllegalArgumentException: bitmapy nie mogą korzystać z recyklingu
Kod dla getView (..) Metoda jest następująca:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null){
// View is not recycled. Inflate the layout.
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.gallery_image, parent, false);
viewHolder = new ViewHolder();
viewHolder.image = (ImageView) convertView.findViewById(R.id.gallery_image);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
viewHolder.image.setImageDrawable(null);
}
imageLoader.displayImage(images.get(position).getFilename(),
images.get(position).getUrlThumbnail(),
viewHolder.image,
Math.round(BitmapUtil.convertDpToPixel(400f, context)),
Math.round(BitmapUtil.convertDpToPixel(400f, context)));
return convertView;
}
Chyba powinienem null gdzieś wyświetlić ImageView, ale nie mogę go uruchomić, aby działał poprawnie. ImageLoader jest (dość) prostą klasą do ładowania obrazów - z LruCache, disk/sdcard lub zdalnie.
czy mógłbyś pokazać kod obrazuLoader - w zasadzie wygląda na to, że w twoim kodzie jest trochę recyklingu mapy bitowej, a potem próbujesz wyświetlić bitmapę (zgodnie z komunikatem o błędzie), ale bez kodu więcej nie może być. powiedział. – Ridcully