Verschwinden von Teiler in ListView, wenn ArrayAdapter.isEnabled false zurückgibt

Ich benutze ListActivity mit meiner eigenen ArrayAdapter Klasse. Wenn ich die Methoden überschreibe ArrayAdapter.areAllItemsEnabled() und ArrayAdapter.isEnabled() der Teiler zwischen einigen Zellen in der ArrayAdapter.isEnabled() verschwindet. Weiß jemand, wie man das vermeiden kann? Ich brauche die Trennwände auch für behinderte Zellen.

  • Wie man APKs in einem angepassten Datenverzeichnis ausführt?
  • Warum zeigt androide Logcat nicht die Stack-Trace für eine Runtime-Ausnahme?
  • Wie kann ich SSL Certificate Pinning bei der Verwendung von React Native implementieren?
  • Google Play Store: Sie müssen Ihr High-Res-Symbol reparieren. Es ist kein gültiges Bild
  • Stapelüberlauf bei Verwendung von Retrofit rxjava concatWith
  • SearchView in OptionsMenu nicht volle Breite
  • Java.lang.IllegalStateException: Diese Aktion kann nach onSaveInstanceState mit DialogFragment nicht ausgeführt werden
  • ASIHTTPRequest-Äquivalent für Android oder einen HTTP-Request-Manager / Wrapper?
  • Wie kann ich Type_orientation (is deprecated) für Android 4.0.3 ersetzen?
  • Ist android: exportiert = "true" wirklich notwendig für einen Authentifizierungsdienst?
  • Dynamische Einstellung der ViewPager-Höhe
  • Wie man serielle Daten mit android bluetooth empfängt
  • 10 Solutions collect form web for “Verschwinden von Teiler in ListView, wenn ArrayAdapter.isEnabled false zurückgibt”

    Geben Sie true in areAllItemsEnabled () und false in isEnabled für spezifisches Element ein. Der deaktivierte Artikel wird nicht anklickbar, aber du kannst die Trennlinien immer noch anzeigen

    Hinweis: Dies funktioniert nicht für Android 5

    Sie können ein Listenelement im Wesentlichen deaktivieren, indem Sie einem seiner Elemente die folgenden Eigenschaften angeben.

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

    So ist das folgende Listenelement-Layout nicht anklickbar, sondern zeigt Teiler, ohne die Notwendigkeit, areAllItemsEnabled() oder isEnabled(int position) zu implementieren.

     <?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> 

    Dies kann in Android 5.0 helfen, wo die ursprüngliche Antwort nicht mehr zu funktionieren scheint.

    Alle oben genannten Lösungen haben ein Problem mit der Kompatibilität (funktioniert nett auf einer Version von Android, aber scheitert an anderen) – besonders wenn Sie Transparenz verwenden möchten. Die einzige wirklich robuste Lösung ist die Verwendung von neun-Patch- Dateien.

    Sie können herunterladen von: http://ge.tt/517ZIFC2/v/1?c

    drawable-nodpi einfach die gewählte png in das drawable-nodpi Verzeichnis, um eine drawable-nodpi zu vermeiden.

    Und benutze es in deinem Adapter:

     convertView.setBackgroundResource(R.drawable.border_b1px_black); 

    Das hat für mich gearbeitet Dies zeigt den Teiler sowie deaktivieren Sie den Klick auf Listenelement. Auch in Android 5.0.

    Setzen Sie dies auf dem Listenelement

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

    Einstellung nur anklickbar auf 'false' hat nicht für mich gearbeitet Und Overriding isEnabled () verursachte die oben erwähnte Ausgabe des Versteckens des Teilers in 5.0.

    Und meine ListView sieht so aus.

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

    Kein android:listSelector="@android:color/transparent" hier benötigt

    Ich kann überprüfen, dass areAllItemsEnabled() false zurückgibt, dann für jede einzelne Zeile, die Sie als nicht wählbar über isEnabled(int position) setzen möchten, verschwindet der Zeilentrenner (divider). Einstellung areAllItemsEnabled() um immer true zurückzugeben, und das Spielen nur mit isEnabled(int position) sollte bestimmte Zeilen nicht auswählbar mit dem Trennzeichen, der gerade gut zeigt.

    Statt der Einstellung isEnabled , auf dein ListView , set android:listSelector="@android:color/transparent" sowie android:focusable="true" und android:clickable="true" . Es gibt die gleiche Wirkung

    Verwenden Sie setDivider(Drawable divider) Methode der Listenansicht

    Ich hatte das gleiche Problem auf Lollipop. Workaround für mich war, den Hintergrund in der Listenansicht zu transparenten zu ändern. In meinem Fall fehlte mir die Trennwände auf der isEnabled auf Zeilen, wo isEnabled falsch zurückkehrt, wenn ich einen Hintergrund auf eine Farbe setze. Versuchen Sie so etwas wie:

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

    Sie müssen die Zeilen in der isEnabled () – Methode für Android 5.0 und höher aktivieren.

    Aber du kannst die Zeilen noch anders ausschalten:

    Im folgenden Beispiel deaktiviere ich jede Zeile, aber Zeile 0:

    In deiner GetView- Methode für deinen Adapter:

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

    Aus irgendeinem Grund, das anklickbar auf true deaktiviert, deaktiviert die Zeile. Ich bin mir nicht sicher, warum. Ich habe zunächst davon ausgegangen, dass dies klickbar wäre, aber das geht nicht.

    Referenz: Android ListView child View setEnabled () und setClickable () nichts tun

    Siehe user622689 Antwort.

    Ich hatte ein ähnliches Problem. Ich löste es, indem ich explizit die Teilerhöhe der Listenansicht auf "1dp"

      <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:dividerHeight="1dp" /> 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.