2016-08-16 2 views
2

Ich weiß, wie man Daten von string-array. Ich habe es so gemacht.Holen Sie sich Daten von Android-String-Array von Ressource

<string-array name="values"> 
    <item>value1</item> 
    <item>value2</item> 
</string-array> 

String[] values = this.getResources().getStringArray(R.array.values); 

Aber ich weiß nicht, ob der unter Typ string-array möglich ist und verwirrt Werte von dem zu bekommen.

<string-array name="country_data"> 
     <item> 
      <country>Afghanistan</country> 
      <countryCode>93</countryCode> 
      <iso2>AF</iso2> 
      <iso3>AFG</iso3> 
     </item> 
    </string-array> 

Wenn es möglich ist, bitte helfen Sie mir, die Werte zu erhalten.

Antwort

2

Ich weiß nicht, ob die unter Typ String-Array möglich ist

Es ist nicht.

Wenn Sie ein beliebiges XML verwenden möchten, verwenden Sie res/xml/ für die gewünschte XML-Struktur. Sie können dann getResources().getXml() verwenden, um eine XmlPullParser abzurufen, mit der Sie das XML analysieren können.

Oder wickeln Sie den Inhalt jedes Ihrer <item> Elemente in CDATA, die den Ressourcenparser davon abhalten sollte, mit ihnen zu verwirren. Dann wäre jede Zeichenfolge, die Sie aus dem Array abrufen, einfaches XML, das Sie analysieren müssten.

Oder gehen Sie mit JSON in res/raw/ oder assets/ mit Ihrem Lieblings-JSON-Parser (z. B. Gson).

Oder use SQLiteAssetHelper, um eine Datenbank in Ihrer App zu packen, in der diese Daten vorinstalliert sind.

Oder verwenden Sie R. Zagórski's solution, mit einem <string-array> pro Objekt, mit <item> Elemente für jedes Feld des Objekts.

+0

Ich zog es vor, mit XmlPullParser zu gehen. –

0

Natürlich ist es möglich.

Zusammengefasst:

  1. definieren POJO repräsentieren Ihr Modell
  2. eine Funktion erstellen String-Array von Arrays von Ressourcen in diese POJO

Denken Sie daran, dass Sie nicht benutzerdefinierte XML-Einträge verwenden, um zu importieren, Sie müssen <item> sein. Und Sie müssen wissen, es ist Typ im Voraus.

1

xml:

<string-array name="_name"> 
     <item>n11</item> 
     <item>n12</item> 
     <item>n13</item> 
     <item>n14</item> 
     <item>n15</item> 
     <item>n16</item> 
    </string-array> 

bei Java-Klasse abrufen:

String[] test; 
test = getResources().getStringArray(R.array._name); 
Verwandte Themen