Vista de lista de Android: obtener índice de datos del elemento visible

Tengo un ListView Android creado con un SimpleAdapter que tiene más elementos que caben en la pantalla. Después de que la lista se haya desplazado, necesito obtener el puesto en el modelo de datos del primer elemento visible de la lista.

Básicamente quiero una función como: listView.getChildAt(0).getPositionInDataModel() .

Adapter tiene algunas funciones, como getItemId(position) que parecía útil; sin embargo, la implementación de SimpleAdapter simplemente devuelve la posición aprobada, no una identificación de fila como esperaba.

Una solución de fuerza bruta sería obtener la Vista en el índice 0 y compararla con la vista de cada elemento del adaptador. Sin embargo, no parece haber una manera fácil de obtener la vista para una posición particular del adaptador.

Alguien tiene alguna idea?

Es muy fácil. Solo use ListView.getFirstVisiblePosition() + indexYouWant . Por ejemplo, para obtener la posición en el adaptador del segundo niño que se muestra en ListView , simplemente use getFirstVisiblePosition() + 1 .

No hay necesidad de todas las cosas de miedo que se muestran en la respuesta anterior 🙂

 listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView parent,View view, int pos, long id) { AisleId= parent.getSelectedItemId(); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); 

En este, obtendremos el elemento de la lista Id parent.getSelectedItemId ();

Simplemente use getPositionForView(View) ( vea la documentación ). La principal ventaja de este método es que también funciona con las View descendientes de un elemento.