2010-09-21 5 views
1

J'ai deux éléments liés entre eux qui doivent être accessibles séparément. Le titre d'un livre et combien de pages il a. J'ai fait un tableau pour les titres, mais quel est le meilleur moyen de lier le nombre de pages de ce livre à ce titre?Multidimensional Array

Je pensais à ce qui suit, mais je ne vois pas comment accéder au nombre de pages.

<string-array name="books"> 
    <item pages="428">"book1"</item> 
    <item pages="599">"book2"</item> 
    <item pages="204">"book3"</item> 
</string-array> 

Répondre

1

Ne serait-ce pas mieux?

<books> 
    <book> 
     <pages>428</pages> 
     <title>book1</title> 
    </book> 
    <book> 
     <pages>599</pages> 
     <title>book2</title> 
    </book> 
    <book> 
     <pages>204</pages> 
     <title>book3</title> 
    </book> 
</books> 

L'expression XPath pour obtenir le nombre de pages sera

/books/book[title='book1']/pages 

Si vous soucier de la taille, puis ceci:

<books> 
    <book pages="428" title="book1"/> 
    <book pages="599" title="book2"/> 
    <book pages="204" title="book3"/> 
</books> 

Et l'expression XPath:

/books/book[@title='book1']/@pages 
8

Vous pourriez y aller avec XPath mais à mon humble avis, il serait exagéré.

Pour moi, il semble que vous ayez besoin d'une carte pour garder une trace des pages. Je voudrais éviter personnellement l'utilisation du tableau de chaînes (car je ne pense pas qu'il y ait de toute façon de faire référence à un attribut pour un élément) comme suit:

// create HashMap to write pages to 
Map<String, Integer> bookPageMapping = new HashMap<String, Integer>(); 
bookPageMapping.put("book1", 428); 
bookPageMapping.put("book2", 599); 
bookPageMapping.put("book3", 204); 

Vous pouvez aussi, mettre le livre littéraux dans le strings.xml comme suit, et les référencer de cette façon aussi:

strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="app_name">MultiArray</string> 
    <string name="book1">book1</string> 
    <string name="book2">book2</string> 
    <string name="book3">book3</string> 
</resources> 

Ensuite, vous référencer les fichiers dans votre code comme suit:

// create HashMap to write pages to 
Map<String, Integer> bookPageMapping = new HashMap<String, Integer>(); 
bookPageMapping.put(getString(R.string.book1), 428); 
bookPageMapping.put(getString(R.string.book1), 599); 
bookPageMapping.put(getString(R.string.book1), 204); 

Ou vous pouvez aller avec le tableau des chaînes:

strings.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="app_name">MultiArray</string> 
    <string-array name="books"> 
     <item>book1</item> 
     <item>book2</item> 
     <item>book3</item> 
    </string-array> 
</resources> 

répandent alors dans hashmap en conséquence:

// get the String array from resources 
Resources res = getResources(); 
String[] books = res.getStringArray(R.array.books); 

// create HashMap to write pages to 
Map<String, Integer> bookPageMapping = new HashMap<String, Integer>(); 
bookPageMapping.put(books[0], 428); 
bookPageMapping.put(books[1], 599); 
bookPageMapping.put(books[2], 204); 

Pour plus d'informations, consultez le site du développeur Android et faire une recherche de ressources de chaîne ou de carte. J'aurais directement posté ces liens mais comme je suis un nouvel utilisateur, je ne peux pas poster plus d'un lien hypertexte. BTW, ceci est mon premier poste de débordement de pile ainsi soyez gentil :)