Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

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: vista de la lista de identificaciones
  • ¿Cómo actualizar ListView en caso de uso CursorAdapter?
  • ¿Hay una manera de desactivar la animación de Android ListView?
  • Cómo cargar el ListView "sin problemas" en android
  • Cómo ocultar la línea horizontal en la parte inferior de cada elemento en android listview?
  • Android: deshabilita la selección ListView
  • Los botones adyacentes en la vista de lista se hacen clic automáticamente
  • Cambio de fondo en la biblioteca de tablas de interfaz de usuario de Android (thiagolocatelli)
  • 2 Solutions collect form web for “Android ListView: detecta si los datos de ListView se ajustan a la pantalla sin desplazarse”

    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:

    1. Widgets si es necesario – encabezado
    2. ListView – diseño principal
    3. 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); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.