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.

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" /> 
  • Nesting Android ViewPager, Swiping ListItems dentro de un ListView horizontalmente
  • ¿Cuál usar WebView o TextView en una lista con datos HTML en ella?
  • Cómo utilizar setEmptyView () con el diseño de lista personalizada en ListFragment
  • La vista de pie de página para ListView no se muestra en 1 dispositivo, pero está en otro?
  • Obtener iconos de aplicaciones que se ejecutan en el dispositivo
  • Android ListView scrollbarStyle
  • ¿Por qué utilizar Inflater en listview?
  • Android: cómo usar SectionIndexer
  • Se ha intentado finalizar un evento de entrada pero el receptor de eventos de entrada ya se ha eliminado
  • Quite el divisor inferior de un ListView de Android
  • Android: Cómo ocultar un elemento ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.