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


Desaparecer divisor en ListView cuando ArrayAdapter.isEnabled devuelve false

Estoy utilizando ListActivity con mi propia clase ArrayAdapter . Cuando ArrayAdapter.areAllItemsEnabled() los métodos ArrayAdapter.areAllItemsEnabled() y ArrayAdapter.isEnabled() el divisor entre algunas celdas de la vista de lista desaparece. ¿Alguien sabe cómo evitar esto? Necesito los divisores para mostrar incluso para las celdas deshabilitadas.

  • No se pudo resolver: com.android.support:cardview-v7:26.0.0 android
  • Phonegap Clase no encontrada en el archivo: ///android_asset/www/cordova-2.0.0.js: 938
  • Se produjo un error después de actualizar la herramienta Android SDK REV 22 "No se pudo resolver la superclase de L"
  • Android ImageButton - determina qué recurso está configurado actualmente
  • ¿Cómo utilizar el lienzo de android para dibujar un rectángulo con sólo topleft y las esquinas verticales alrededor?
  • Ignore OnItemSelectedListener encendiendo en crear
  • Cómo manejar clics de botón utilizando el XML onClick dentro de Fragmentos
  • La forma más fácil de escribir y leer un XML
  • Animación de Flip de Tarjeta entre Actividades
  • ¿El android: scaleType = "fitCenter" sólo funciona con los atributos fix Layout_width y Layout_height?
  • Android AsyncTasks Cómo comprobar si la actividad aún se está ejecutando
  • Programáticamente establecer la sugerencia de texto de edición en android?
  • 10 Solutions collect form web for “Desaparecer divisor en ListView cuando ArrayAdapter.isEnabled devuelve false”

    Devuelve true en areAllItemsEnabled () y false en isEnabled para el elemento específico. El elemento deshabilitado no podrá hacer clic, pero seguirá siendo capaz de ver las líneas de división

    Nota: esto no funciona para Android 5

    Es posible desactivar esencialmente un elemento de lista al proporcionar a cualquiera de sus elementos las siguientes propiedades.

     android:focusable="true" android:clickable="true" 

    Por lo tanto, la siguiente disposición de elementos de lista no se puede hacer clic, pero mostrará divisores, sin necesidad de implementar areAllItemsEnabled() o isEnabled(int position) .

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:focusable="true" android:clickable="true"> <TextView android:text="Large Text" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 

    Esto puede ayudar en Android 5.0 donde la respuesta original ya no parece funcionar.

    Todas las soluciones anteriores tienen un problema con la compatibilidad (funciona bien en una versión de Android, pero falla en otras) – especialmente si desea utilizar la transparencia. La única solución realmente robusta es usar el archivo de nueve parches .

    Se puede descargar desde: http://ge.tt/517ZIFC2/v/1?c

    Simplemente coloque el png elegido en el directorio drawable-nodpi para evitar el remuestreo.

    Y utilizarlo en su adaptador:

     convertView.setBackgroundResource(R.drawable.border_b1px_black); 

    Esto funcionó para mí. Esto mostrará el divisor, así como deshabilitar el clic en el elemento de la lista. Incluso en Android 5.0.

    Establezca esto en el elemento de lista

     android:focusable="true" android:clickable="false" 

    Ajustar apenas clickable a "falso" no trabajó para mí. Y sobreescribir isEnabled () causó el problema mencionado de ocultar el divisor en 5.0.

    Y mi ListView se parece a esto.

     <ListView android:id="@+id/lvItems" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@color/Gray" android:dividerHeight="1px"> </ListView> 

    No android:listSelector="@android:color/transparent" necesario aquí

    Puedo verificar que cuando areAllItemsEnabled() devuelve false, entonces para cada fila específica que usted quiere fijar como no seleccionable vía isEnabled(int position) el separador de línea (divisor) desaparece. Establecer areAllItemsEnabled() para devolver true siempre, y jugar sólo con isEnabled(int position) debería hacer filas específicas no seleccionables con el divisor mostrando muy bien.

    En lugar de establecer isEnabled , en su ListView , defina android:listSelector="@android:color/transparent" , así como android:focusable="true" y android:clickable="true" . Da el mismo efecto

    setDivider(Drawable divider) método setDivider(Drawable divider) del listview

    Tuve el mismo problema en Lollipop. Una solución para mí era cambiar el fondo en el listview a transparente. En mi caso me faltaba los divisores en el cajón de nav en las filas donde isEnabled devuelve false cuando pongo un fondo a un color. Intente algo como:

      android:background="@android:color/transparent" 

    Tendrá que habilitar las filas en el método isEnabled () para Android 5.0 y versiones posteriores.

    Pero todavía puede desactivar las filas de otra manera:

    En el ejemplo siguiente, estoy inhabilitando cada fila pero fila 0:

    En su método getView para su adaptador:

     if (position > 0) { convertView.setClickable(true); } 

    Por alguna razón la configuración de clickable a true desactiva la fila. No sé por qué. Supuse que al principio esto haría que se haga clic, pero no lo hace.

    Referencia: Android ListView child Ver setEnabled () y setClickable () no hacer nada

    Ver user622689 respuesta.

    Tuve un problema similar. Lo resolví estableciendo explícitamente la altura del divisor de la vista de lista para ser "1dp"

      <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:dividerHeight="1dp" /> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.