2011-11-22 14 views
11

Cuando implementamos OnItemClickListener, tenemos que implementar el método onItemClick que es un método abstracto en la interfaz OnItemClickListener. En el método onItemClick, hay cuatro argumentos.Cuál es la diferencia entre el argumento "int" y "largo" en onItemClick en Android

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    Toast.makeText(this, "Clicked on : " + arg2 + " long arg : " + arg3, 
        Toast.LENGTH_LONG).show(); 
} 

Lo que necesito saber es la diferencia entre los dos últimos argumentos (int arg2, long arg3). Como puede ver en mi código, cuando trato de Toast obtengo el mismo valor para ambos argumentos.

+0

que he cifra que claramente ... [link] (http : //anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/) – AnujAroshA

Respuesta

2

Las respuestas dadas son muy útiles. Pero la respuesta necesaria, quiero decir, la respuesta exacta que quería se publicó como un comentario para la pregunta por mí mismo. Pero eso no aumentará mi "nivel de aceptación". Así que pensé en poner el enlace como la respuesta a la pregunta. Aquí está el link a la respuesta.

+0

Las respuestas solo de enlace no son buenas respuestas. –

4

Considere la posibilidad de leer the documentation.

El int es la posición de la vista, el long es el ID del artículo.

(No podemos ver que se obtiene el mismo valor para ambos; sólo vemos su código, no la pantalla.)

+2

No puedo cargar ninguna imagen caz Soy nuevo en Stackoverflow y también he leído la documentación y la explican de la misma manera. Necesito una explicación más. Es por eso que publiqué la pregunta aquí. Estoy muy contento si me puede indicar un ejemplo de código donde puedo ver cómo podemos usar esos dos últimos argumentos. – AnujAroshA

1

int valor representa posición del elemento y, a largo valor representa el artículo Id..

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

parent  The AdapterView where the click happened. 
view  The view within the AdapterView that was clicked 
      (this will be a view provided by the adapter) 
position The position of the view in the adapter. 
id   The row id of the item that was clicked. 
+0

+1 buena información, pero de Android Doc :) –

+0

En una lista, cuando hacemos clic en un elemento, esa devolución de llamada la "posición" de ese elemento. Entonces, ¿cuál es el "id"? Si puedes explicar algo así, estaré muy agradecido. He hecho mi trabajo a domicilio (lea la documentación de Android) antes de plantear esta pregunta aquí. Así que por favor explica algo más o algo diferente al doc. Gracias (http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html#onItemClick%28android.widget.AdapterView%3C?%3E,%20android.view.View,%20int,%20long % 29) – AnujAroshA

+0

permítanos tomar 5 elementos en la lista, las posiciones comienzan desde cero, es decir, (0,1,2,3,4) son las posiciones de los elementos y el id significa que automáticamente será generado por android en tiempo de ejecución para reconocer Los artículos. Esta es la –

1

En mi opinión, a través de la posición, puede obtener el artículo de la fila con getItem del adaptador (posición). Entonces, la posición significa la posición de los datos en el adaptador.

Para el parámetro id, creo que es un método de ayuda, como saben, los datos en el adaptador siempre son un grabador. En términos generales, un grabador debe tener una columna de id. (algo así como la id de la base de datos). al codificar, puede obtener el artículo a través de la posición, luego obtener la identificación del ítem (si el ítem tiene una identificación). pero puede obtener esa "id" directamente con el parámetro "id". puede notar: la posición es de tipo "int" mientras que "id" es de tipo "larga".

Por cierto, si desea usar el parámetro id, debe implementar el método getItemId() en el adaptador. el implemento predeterminado en ArrayAdapter es simplemente devolver la posición.

25

Tenía la misma pregunta que usted. Sin embargo, las respuestas aquí no fueron de gran ayuda. No apoyo las respuestas de "hágalo usted mismo", especialmente cuando la llamada documentación no está clara. Sin embargo, lo busqué yo mismo, y lo siguiente es lo que encontré.

El valor int 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 la posición 2, etc. Tenga en cuenta que si su ListView tiene una vista de encabezado (como si lo hiciera ListView.addHeaderView(View)), la vista del encabezado sería la posición 0 y la real filas se comienzan su numeración en 1.

veces el valor a largo es la misma que la posición int ya veces es diferente.Si está usando ArrayAdapter o SimpleAdapter, entonces son iguales (excepto en el caso de que haya una vista de encabezado y luego estén desactivados por uno). Para un CursorAdapter (y en consecuencia un SimpleCursorAdapter), id larga devuelve el id. De fila de la tabla, es decir, _id. Es largo en lugar de int porque una base de datos podría teóricamente tener más filas que int podría contener mientras que ListView no lo haría.

Aquí están algunas otras respuestas relacionadas:

Cuestiones relacionadas