Android ListView: detecta si los datos de ListView se ajustan a la pantalla sin desplazarse
Posible duplicado:
Android: using notifyDataSetChanged y getLastVisiblePosition – cuando el listView se actualiza realmente?
Tengo un ListView simple con solamente algunas entradas. Dependiendo del tamaño del dispositivo y la orientación, el ListView necesita desplazarse o no.
- Creación de ListView mediante programación
- Cómo rellenar un ListView personalizado de ListArray
- ¿Por qué mi ListView no muestra nada?
- ¿Puedo cambiar el estilo de ListView Android sin crear listview personalizado?
- ListView: ¿Cómo espero hasta que esté cargado?
También tengo una imagen en la pantalla, que no es realmente necesario. Me gustaría quitar la imagen si no hay suficiente espacio para el ListView sin desplazamiento.
Cuando lleno mi ListView en el onCreate de la actividad, el getLastVisiblePosition () aún no es válido, devuelve -1. Por lo tanto, no puedo comparar el último elemento visible con el recuento de listas.
Int lastVisiblePos = listView.getLastVisiblePosition (); // devuelve -1
(Si hago clic en un botón más tarde para volver a comprobar, el valor es correcto.)
El uso de onScrollingListener es demasiado tarde, ya que la imagen no debe mostrarse en primer lugar.
Estoy desarrollando en API nivel 10.
¿Alguna sugerencia?
- Android: deshabilitar la selección de ListView Resaltar pero mantener OnClick habilitado
- Cómo desplazar un ListView en android programatically a hasta gesto hacia abajo
- Android: deshabilita la selección ListView
- Ocultación de pie de página en ListView
- ListView cambia el elemento entre marcado y desmarcado - Android
- Encuadernación onScrolling escucha al android ListView
- Android ListView con Fragmento
- ¿Utilizar un ListView para crear una pantalla de configuración en Android?
Compare getLastVisiblePosition()
con getCount()
en un Runnable para ver si todo el ListView se ajusta a la pantalla tan pronto como se ha dibujado. También debe comprobar si la última fila visible se ajusta totalmente a la pantalla.
Cree el Runnable:
ListView listView; Runnable fitsOnScreen = new Runnable() { @Override public void run() { int last = listView.getLastVisiblePosition(); if(last == listView.getCount() - 1 && listView.getChildAt(last).getBottom() <= listView.getHeight()) { // It fits! } else { // It doesn't fit... } } };
En onCreate()
coloque su Runnable en el Handler de ListView:
listView.post(fitsOnScreen);
¿Por qué estás buscando problemas? En lugar de su idea puede utilizar 3 diseños:
- Widgets si es necesario – encabezado
- ListView – diseño principal
- ImageView u otros widgets – pie de página
ListView lv = (ListView) findViewById(R.id.listView); View header = getLayoutInflater().inflate(R.layout.header_layout, null); View footer = getLayoutInflater().inflate(R.layout.foorer_layout, null); lv.addHeaderView(headerComment); lv.addFooterView(footerComment);
- ¿Cómo puedo dar un estilo en negrita en android?
- ¿Cómo crear la forma del anillo drawable en androide?