¿Qué significa AdapterView <?> En el método OnitemClick ()? ¿Cuál es el uso de otros parámetros en ella?

gridview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Toast.makeText(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show(); } }); 

El <?> Indica un genérico. Lea más sobre ellos aquí .

Esto es lo que dice la documentación sobre los parámetros:

onItemClick(AdapterView<?> parent, View view, int position, long id)

Parent El AdapterView donde ocurrió el clic.

View La vista dentro del AdapterView que se hizo clic (esto será una vista proporcionada por el adaptador)

Position La posición de la vista en el adaptador.

Id Id de la fila del elemento al que se hizo clic.

El AdapterView podría ser un ListView , GridView , Spinner , etc. El signo de interrogación dentro de los corchetes angulares indica que podría ser cualquiera de ellos. Esto se llama genéricos en Java. Puede utilizar padre en código para hacer algo a la vista completa. Por ejemplo, si estuviera usando un ListView podría ocultar todo el ListView por la siguiente línea de código:

 parent.setVisibility(View.GONE); 

La View refiere a un elemento específico dentro de AdapterView . En un ListView es la fila. Por lo tanto, puede obtener una referencia a un TextView dentro de una fila diciendo algo como esto:

 TextView myTextView = (TextView) view.findViewById(R.id.textView1); String text = myTextView.getText().toString(); 

La posición es la posición de la vista en el padre . Para un ListView , es el número de fila. La fila superior es la posición 0, la segunda fila es la posición 1, la tercera fila es la posición 2, etc. Tenga en cuenta que si su ListView tiene una vista de encabezado (como si hiciera ListView.addHeaderView(View) ) entonces la vista del encabezado sería Posición 0 y las filas reales comenzarían su numeración en 1.

A veces id es lo mismo que la posición ya veces es diferente. Si está usando un ArrayAdapter o SimpleAdapter entonces son iguales (excepto en el caso de que haya una vista de encabezado y luego estén apagados por uno). Para un CursorAdapter (y, en consecuencia, un SimpleCursorAdapter ), el identificador devuelve el ID de la fila de la tabla, es decir, _id .

Aquí hay algunas otras buenas respuestas sobre este tema:

Los ? Significa que el tipo de datos es desconocido y puede ser de cualquier tipo.

  • No se pueden dibujar vistas secundarias en el grupo de vistas cuando se utiliza la vista del adaptador
  • Error de Logcat: "addView (View, LayoutParams) no es compatible con AdapterView" en un ListView
  • MultiAutoCompleteTextView no funciona OnItemSelectedListener
  • GridView con el botón del menú del filtro en Android
  • Cómo obtener objeto de listview en setOnItemClickListener en android?
  • Uso correcto de setEmtpyView en AdapterView
  • Configuración de android: windowBackground a @ null hace desplazamiento a mancha?
  • Diferencia entre onItemClickListener y OnItemSelectedListener de AdapterView
  • Extensión de AdapterView
  • RequestLayout () incorrectamente llamado por android.widget.RelativeLayout android
  • Android: stackFromBottom = "true" no parece funcionar perfectamente (revertir ListView con el adaptador)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.