2011-10-28 11 views
7

¿Hay alguna forma de encontrar el alto de un elemento de ListView que se muestra actualmente en la lista sin configurarlo en los archivos xml de diseño?Android: Encontrar el elemento renderizado de ListView altura

He intentado

View listItem = listAdapter.getView(currentIndex, null, listView); 
listItem.measure(MeasureSpec.EXACTLY, MeasureSpec.UNSPECIFIED); 
int itemHeight = listItem.getMeasuredHeight(); 

y mientras funcionó inicialmente, decidió lanzar una excepción de puntero nulo durante la medida de llamada() después de comenzar una nueva sesión del emulador.

Lo que estoy tratando de hacer es tener un elemento en una lista corta (solo 2 o 3 elementos completos son visibles) centrar cuando se selecciona por el programa.

+0

Añadir el error en su pregunta. Creo que 'listAdapter.getView (currentIndex, null, listView)' devuelve null. Como listItem es null, obtienes NullPointerException cuando llamas a 'listItem.measure()'. –

+0

¿Está usando un adaptador personalizado? Tal vez sea mejor hacer esta medida desde el adaptador personalizado, ya que la altura se calcula justo después de dibujar la vista. –

Respuesta

0

Esto funcionó para mí:

public static int getItemViewHeight(Context context, Adapter adapter, int index) { 
    FrameLayout fakeParent = new FrameLayout(context); 
    View view = adapter.getView(index, null, fakeParent); 
    view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 
    return view.getMeasuredHeight(); 
} 
Cuestiones relacionadas