Acceder

Ver la Versión Completa : [ CONSULTA ] Objetos GridView


marellanor
17/08/14, 19:17:45
Hola!. Alguien me podría indicar como recuperar objetos(imagen) o nombres del objeto(imagen) que se encuentren en una gridview, para poder comparar y ver si hay 2 imágenes iguales dentro de la gridview?.

Saludos y Gracias!

kriogeN
17/08/14, 19:28:32
El GridView como tal no contiene información de lo que tiene dentro, ya que únicamente tiene un Adapter que lo rellena, igual que un ListView.

Así que respondiendo a tu pregunta, depende de como tengas implementado el Adapter, si has usado un BaseAdapter lo más probable es que tengas un List (o cualquier otro tipo de colección) con las imágenes que tienes que insertar en el GridView, así que ya lo único que tienes que hacer es comparar las posiciones de ese List (o Array, o lo que sea)

marellanor
17/08/14, 19:34:05
Entiendo. Lo que pasa es que estoy desarrollando el Juego 'Memorice'. Entonces lo que hago es crear un arraylist con 16 imagenes(8 imagenes distintas). Luego hago con Collections.shuffle(animales) de ese arraylist. Creo una gridview con 16 imagenes que son iguales. Posterior a eso cuando se hace click en una imagen de la gridview rescato la posicion en la cual se ha hecho click y seteo una imagen de arraylist(animales) en dicha posicion. Entonces quiero comparar esas imagenes para poder ver si son iguales para sacar las imagenes de la gridview, sino volverlas a voltear. No sé si me explico.

Adjunto mi codigo. A ver si me dicen como lo puedo hacer o dar una idea mas o menos.

package com.paquete.juegayaprendeapp;

import java.util.ArrayList;
import java.util.Collections;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.Toast;

public class Juego3Libre extends Activity implements android.widget.AdapterView.OnItemClickListener {

private ArrayList<Integer> animaleslist = new ArrayList<Integer>();

private ArrayList<Integer> signolist = new ArrayList<Integer>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.juego3libre);
//Acá seteo el nombre del layout
this.setTitle("JUEGO MEMORICE");

GridView gridview = (GridView) findViewById(R.id.GridView);
gridview.setAdapter(new ImageAdapter(this));

gridview.setOnItemClickListener(this);


}

public class ImageAdapter extends BaseAdapter{

private Context contexto;

public ImageAdapter(Context c){
contexto=c;

//se cargan las miniaturas
animaleslist.add(R.drawable.caballo);
animaleslist.add(R.drawable.cerdo);
animaleslist.add(R.drawable.leon);
animaleslist.add(R.drawable.rana);
animaleslist.add(R.drawable.gato);
animaleslist.add(R.drawable.gallo);
animaleslist.add(R.drawable.foca);
animaleslist.add(R.drawable.mono);

animaleslist.add(R.drawable.caballo);
animaleslist.add(R.drawable.cerdo);
animaleslist.add(R.drawable.leon);
animaleslist.add(R.drawable.rana);
animaleslist.add(R.drawable.gato);
animaleslist.add(R.drawable.gallo);
animaleslist.add(R.drawable.foca);
animaleslist.add(R.drawable.mono);

Collections.shuffle(animaleslist);

signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
//
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);
signolist.add(R.drawable.signointe);

}

@Override
//Cantidad de imagenes que se desea mostrar
public int getCount() {
// TODO Auto-generated method stub
return animaleslist.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageview;

if(convertView == null){

imageview = new ImageView(contexto);
imageview.setLayoutParams(new GridView.LayoutParams(85,85));
imageview.setScaleType(ImageView.ScaleType.CENTER_ CROP);
imageview.setPadding(5, 5, 5, 5);
}else{
imageview = (ImageView) convertView;
}

//imageview.setImageResource(animaleslist.get(positi on));
imageview.setImageResource(signolist.get(position) );
return imageview;
}

}

@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// TODO Auto-generated method stub
//Instancio el imageview
ImageView imageview =(ImageView) v;
//Obetengo la imagen en la posicion tocada y seteo la imagen
imageview.setImageResource(animaleslist.get(positi on));

}
}



Saludos y gracias por el tiempo de ayuda.

marellanor
17/08/14, 23:51:31
Es posible guardar donde se hizo click anteriormente en un gridview?