Ok, creo que tengo una pregunta real para variar. Implementé un gridView en Android, siguiendo paso a paso las instrucciones en la página de Desarrolladores de Android, http://developer.android.com/resources/tutorials/views/hello-gridview.html Lo cambié para que al hacer clic en una vista, se devuelva el mapa de bits. Todo esto funciona muy bien en teléfonos avanzados como Galxy Note y Galaxy S2, y en los menos avanzados como Galaxy Ace e incluso algunos hppy cómicos de hace 2 años. Pero por alguna razón, se bloquea en galaxy 3 con ICS debido a problemas de OutOfMemory. Cuando se utiliza aproximadamente la mitad de las imágenes en la vista de cuadrícula, funciona (aunque un poco lentamente). ¿Tiene esto sentido para alguien?android gridview se bloquea en Galaxy 3
Esta es mi implementación de ImageAdapter:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private int mWidth;
private int mHeight;
public ImageAdapter(Context c, int width, int height) {
mContext = c;
mWidth = width;
mHeight = height;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return mThumbIds[position];
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(mWidth, mHeight));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.third_world , R.drawable.annoyinggirl,
R.drawable.asianfather, R.drawable.awkawespeng,
R.drawable.awkpeng, R.drawable.blankdad,
R.drawable.collegesenior, R.drawable.courage,
R.drawable.frog, R.drawable.frynotsure,
R.drawable.goodguygreg, R.drawable.scumbag,
R.drawable.raptor,R.drawable.keano,
R.drawable.successkid, R.drawable.wonka,
R.drawable.braceyourselves, R.drawable.onedoesnotsimply,
R.drawable.firstworldproblem, R.drawable.amitheonlyone,
R.drawable.badluckbrian, R.drawable.interestingman,
R.drawable.toodamnhigh, R.drawable.def
};
}
Ésta es la función de llamada de mi principal:
private void changeToTemplateView(){
setContentView(R.layout.templates);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(context, (int)(dstWidth * 1.4), (int)(dstHeight * 1.4)));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Options opts = new Options();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), (int) parent.getItemIdAtPosition(position), opts);
//do stuff with bitmap
}
});
}
Y este es el XML para el gridview:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
Si alguien tiene alguna idea de lo que podría estar haciendo mal aquí, estaré siempre agradecido
EDIT: Antes del accidente, me sale un error en el registro: "FimgApiStretch: no estirar". Además, el desplazamiento en la vista de cuadrícula no funciona. Esto es independientemente del hecho de que incluso si no hay suficientes miniaturas para causar un desplazamiento, la aplicación aún se bloqueará
puede proporcionar los mensajes de logcat? –
@Muhannad solo mañana, no tengo un Galaxy s3 y no tendré acceso a uno hoy. ¿Será de ayuda si muestro la vista de cuadrícula real? –