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.

  • Cómo añadir un botón debajo de un listview en android
  • Personalización de los colores de Android ListView?
  • No se puede resolver el método .runOnUiThread
  • SmoothScrollToPosition después de notifyDataSetChanged no funciona en android
  • Android scroll mientras arrastra y suelta
  • Seleccionar todos los elementos de ListView
  • 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?

  • Creación de un RecyclerView ampliable
  • BaseAdapter que hace que ListView salga de orden cuando se desplaza
  • SetEmptyView en ListView no mostrar su vista en una aplicación para Android
  • Android: deshabilita la selección ListView
  • Mostrar la vista vacía cuando ListView está vacío
  • Android ListView child Ver setEnabled () y setClickable () no hacer nada
  • 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.