2016-08-09 22 views
0

Ich habe jetzt ein Spinner und ich möchte die Daten in den Spinner mit Datenbindungsfunktion laden. Ich habe versucht, den Weg zu finden, das String-Array im XML zu deklarieren (https://developer.android.com/topic/libraries/data-binding/index.html#expression_language), aber kein zufriedenes Ergebnis gefunden.Kann nicht festlegen, String-Array für Spinner mit Android-Datenbindung

<layout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:apps="http://schemas.android.com/apk/res-auto"> 

<data> 
    <import type="android.util.SparseArray"/> 
    <variable 
     name="statuslist" 
     type="SparseArray<String>"/> 
</data> 
... 
<android.support.v7.widget.AppCompatSpinner 
     android:id="@+id/spn_status" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignStart="@+id/spinner1" 
     android:layout_below="@+id/btn2" 
     android:entries="@{statuslist}" 
     apps:adapter="@{statusAdapter}"/> 
</layout> 

Wenn es erstellt wird, wird der folgende Fehler angezeigt.

Fehler: Ausführung fehlgeschlagen für Task ': app: dataBindingProcessLayoutsDebug'.

org.xml.sax.SAXParseException; systemId: file:/C:/Users/../app/build/intermediates/res/merged/debug/layout/testdialog.xml; lineNumber: 24; columnNumber: 30; The value of attribute "type" associated with an element type "null" must not contain the '<' character.

Allerdings gibt es etwas verwirrt.

  1. Als ich versuchte, SparseArray zu verwenden, wie auf der Website gezeigt. Ich habe im Android Studio XML Editor ein "Can not resolve sysmbol" gefunden.
  2. Ich weiß nicht, ist es die richtige Art, den Array-Wert für den Spinner einzurichten, da es keine offiziellen Anweisungen für die Spinner Datenbindung auf der Website gibt.
+0

Haben Sie die Datenbindung in build.gradle aktiviert? – anhtuannd

+0

Ja, ich aktiviere die Datenbindung in build.gradle. Hier ist die Information von meinem Android Studio (Version: 2.1.2, JavaVersion: 1.7) –

Antwort

0

Haben Sie das SparseArray importiert?

versuchen Sie dies:

<data><import type="android.util.SparseArray"/></data> 
+0

Ich habe vergessen, diese Aussage in der Frage hinzuzufügen. Ich habe das versucht, aber es funktioniert nicht –

+2

SparseArray Wechsel zu SparseArray < String>, versuchen Sie es erneut – FrankOy

+0

Versucht auf diese Weise und es immer noch nicht funktioniert. Fehler "Symbol kann nicht aufgelöst werden" wird weiterhin angezeigt –

0

Dies ist eine sehr einfache Möglichkeit zur Einrichtung ein Spinner mit einem String-Array von Ihrer Ressource array.xml

<Spinner 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:entries="@array/spinner_array_items"/> 

Die spinner_array_items eine Liste enthalten soll der Objekte, die im Dropdown-Menü des Spinner gefunden werden.