Android - Imageview no actualiza en ImageAdapter para un gridview

 
Vista:
sin imagen de perfil

Imageview no actualiza en ImageAdapter para un gridview

Publicado por makone (3 intervenciones) el 07/12/2013 13:18:25
Hola buenas, llevo unos dias muy atascado y creo que despues de googlear muchisimo y meterme en foros, ha llegado el momento de pedir ayuda, vereis... tengo un GridView que se llena con un ImageAdapter en el que introduce un string y una imagen. Mi app primero tiene un grid con "categorias", depende a cual hagas click, tiene una lista distinta de imagenes, la primera vez carga las imágenes perfectamente, pero después(y comprobado que todo funciona bien) sigue poniendo las primeras imágenes en vez de las que le toca... sin embargo el textview cambia perfectamente... que no hago bien para actualizar correctamente las imagenes¿?
muchas gracias de antemano.


Esta es mi clase PRODUCTOS, donde usa el gridview y el ImageAdapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public void onCreate(Bundle savedInstanceState)
	    {
 
	        super.onCreate(savedInstanceState);
	        requestWindowFeature(Window.FEATURE_NO_TITLE);
	        setContentView(R.layout.activity_productos);
 
	        //cojo categoria de Categoria
	        Bundle bundle = this.getIntent().getExtras();
	        categoria=bundle.getInt("CAT");
	        categoria=categoria+1;
	    	//Log.e("cAtegORIA<>> "+categoria," AQUIII");
 
 
			atras=(Button) findViewById(R.id.attras);
			atras.setOnClickListener(new OnClickListener(){
 
				@Override
				public void onClick(View v) {
					finish();
				}
 
			});
	        listado=new ArrayList();
 
//OBTENGO LA LISTA TOTAL Y LA LISTA SEGUN LA CATEGORIA
			lista l=new lista(context);
			listado=l.conjuntoCategoria(categoria);
			Integer[] imagenes=new Integer[listado.size()];
			imagenes=sacarFotos(listado);
 
	        gridView = (GridView) findViewById(R.id.grid);
 
 //HE PROBADO LO QUE APARECE DEBAJO DE LA LINEA PERO NO FUNCIONA
	        gridView.destroyDrawingCache();
//AQUI TIRA DEL ADAPTER
	        im = new ImageAdapter(Productos.this,imagenes,categoria);
	        gridView.setAdapter(im);
	        im.notifyDataSetChanged();
}

y esta es mi clase ImageAdapter


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
public class ImageAdapter extends BaseAdapter
{
	Typeface sansation;
    Context context;
    Integer[] imagenes;
    int categoria;
    List listado;
    ImageView Iview;
 
    //guardamos las imágenes reescaladas para mejorar el rendimiento ya que estas operaciones son costosas
    //se usa SparseArray siguiendo la recomendación de Android Lint
    static SparseArray<Bitmap> imagenesEscaladas = new SparseArray<Bitmap>(7);
    public ImageAdapter(Context context, Integer[] imagenes,int categ)
    {
        super();
    	notifyDataSetChanged();
        this.imagenes = imagenes;
        this.context = context;
        categoria=categ;
 
    }
 
    @Override
    public int getCount()
    {
        return imagenes.length;
    }
 
    @Override
    public Object getItem(int position)
    {
        return position;
    }
 
    @Override
    public long getItemId(int position)
    {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
 
    	 listado=new ArrayList();
    	 listado.clear();
    	 lista l=new lista(context);
		 //l.mostrarLista();
		 listado=l.conjuntoCategoria(categoria);
		//listado=hacerlista();
		Holder holder = null;
        if (convertView == null)
        {
 
        	 holder = new Holder();
             LayoutInflater ltInflate = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
             convertView = ltInflate.inflate(R.layout.gallery_item, null);
 
            holder.setTextView((TextView) convertView.findViewById(R.id.grid_item_label));
            holder.setImage((ImageView) convertView.findViewById(R.id.grid_item_image));
 
            convertView.setTag(holder);
 
          }
          else
 
          {
              holder = (Holder) convertView.getTag();
          }
 
 
 
         if (imagenesEscaladas.get(position) == null)
         {
 
            Bitmap bitmap = BitmapUtils.decodeSampledBitmapFromResource(context.getResources(), imagenes[position], 100, 0);
            imagenesEscaladas.put(position, bitmap);
         }
        holder.getImage().setImageBitmap(imagenesEscaladas.get(position));
        Log.e("POSICION : "+position+"-----<>>"+imagenes[position]," por 1");
        holder.getTextView().setText(sacarNombrePorID(position));
        return convertView;
    }
/////////////////////////////////////////////
	public String sacarNombrePorID(int id){
		String name="";
		int cont=0;
		Object pastel=listado.get(id);
			pastel pas=(pastel) pastel;
			name= pas.devolverNombre();
			//Log.e("Id"+pas.devolverId()+"Imagen-----<>>"+pas.devolverImagen()," por 1");
			cont++;
	        return name;
	}
 
    class Holder
    {
        ImageView image;
 
        TextView textView;
 
        public Holder(){
        	image=null;
        	textView=null;
        }
 
        public ImageView getImage()
        {
            return image;
        }
 
        public void setImage(ImageView image)
        {
            this.image = image;
        }
 
        public TextView getTextView()
        {
            return textView;
        }
 
        public void setTextView(TextView textView)
        {
            this.textView = textView;
        }
 
    }
 
}

que me falta¿? muchas gracias de antemano ^^
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Imageview no actualiza en ImageAdapter para un gridview

Publicado por makone (3 intervenciones) el 08/12/2013 11:52:39
aayuuuuuuuda plizzzz!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar