studio seleccionar onclickitemlistener item for evento elemento code android listview event-handling

seleccionar - onitemclicklistener listview android



Android: ¿controlador OnClick para datos dinámicos de ListView? (3)

Tengo un ListView que se llena con un conjunto dinámico de datos cada vez que se crea la actividad. Por simplicidad, digamos que cada elemento ListView es el nombre de un empleado. Debajo del capó, cada empleado tiene un número de employee_id . Este número no está visible en ninguna parte de la interfaz.

Cuando hago clic en el nombre de un empleado en ListView, deseo iniciar otra actividad, pasando el employee_id del employee_id correspondiente a esa actividad.

Entiendo cómo implementar el controlador onClick para ListView. Mi pregunta es, ¿dónde almacenaría y recuperaría el employee_id para cada empleado? ¿Me limitaría a almacenarlo en un hash / mapa junto con la posición en la lista en la que aparece el empleado? Y cuando hago clic, solo determino la posición en la lista en la que hice clic, y luego obtengo el employee_id del hash usando esa posición.


Sugeriría hacer lo que usted indicó arriba. O, realmente no creo que sea una buena solución, también creo que no hay ninguna, pero podrías agregar una etiqueta sin contenido (maxHeight y maxWdith son ambos 0, o invisible, nunca lo intentaron) y configuraron el texto. No sé cómo es el recurso de los recursos. Pero ya no tendrá que guardar la lista, lo que le ahorrará algo de memoria si tiene una lista grande.


Utiliza un adaptador basado en un conjunto de datos (por ejemplo, una lista de objetos de empleado). Cuando configura un onItemClickListener en su ListView, el método onItemClick obtiene un parámetro int que es la posición en los datos subyacentes. Úselo para sacar el objeto Empleado de su Lista, y allí está la identificación del empleado.


Utilice ArrayAdapter con una lista Employees - suponiendo que tenga Employee-object.

public class MyActivity extends ListActivity { // list of employees private List<Employee> employees = new ArrayList<Employee>();

Luego use el parámetro de posición en OnItemClick para obtener el objeto empleado.

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int employee_id = ((Employee) getListAdapter().getItem(position)).getId(); // ... }

También puede extender el ArrayAdapter para adaptar la lista para los objetos de los empleados: Cómo usar ArrayAdapter <myClass>