No se puede ejecutar OnItemClick para GridView en PopupWindow

Tengo un gridView que exhibo en un popupwindow (el gridview está en una disposición transparente, que hereda de linearlayout y apenas tiene un fondo parcialmente transparente). Nunca puedo obtener OnItemClick de GridView para ejecutarlo. Cuando toco una imagen en mi gridview parece que se hace clic (cambios de imagen bachgrond), pero OnItemClick no se está llamando.

A continuación se muestra el código de mi adaptador y mi popupview que contiene el gridView. ¡Gracias!

//Adapter 

public class ImageAdapter extends BaseAdapter {contexto privado mContext; private int itemBackground;

 public ImageAdapter(Context c) { mContext = c; //---setting the style--- TypedArray a = c.obtainStyledAttributes(R.styleable.Gallery1); itemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0); a.recycle(); } 

….

 public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); } else { imageView = (ImageView) convertView; } imageView.setImageResource(images[position]); imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); imageView.setBackgroundResource(itemBackground); return imageView; } public Integer[] images = { R.drawable.sound1, R.drawable.sound2, R.drawable.sound3, R.drawable.sound4 }; 

}

 //////////In Activity, onCreate//////// ... final LayoutInflater inflater=(LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final TransparentLayout musicGrid = (TransparentLayout) inflater.inflate(R.layout.gridviewpopup, null, false); final GridView gView = (GridView) musicGrid.findViewById(R.id.music_gridview); gView.setAdapter(new ImageAdapter(this)); final PopupWindow soundSelectorWindow = new PopupWindow(this); soundSelectorWindow.setContentView(musicGrid); soundSelectorWindow.setTouchable(true); gView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { //NEVER GETS HERE soundSelectorWindow.dismiss(); } }); 

qué sucede si usted quita soundSelectorWindow.setTouchable(true);

No puedo explicar por qué el OnItemClickListener no funciona, pero cuando he sustituido con OnTouchListener funcionó. ¿Necesita diferenciar entre qué elemento se hace clic o es suficiente saber que se ha hecho clic en el elemento emergente? De su código se ve como el último, por lo que OnTouch debería funcionar:

  popup.setTouchable(true); popup.setFocusable(true); gView.setClickable(true); gView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { popup.dismiss(); return true; } }); 

Compruebe el tamaño de VM del Emulador para que sea lo suficientemente bueno para ejecutar su aplicación en su VM.
Compruebe el tamaño de su <ApplicationName.apk> . Manténgalo en tamaño mínimo para que Emulator no encuentre dificultades en la ejecución de la aplicación.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.