2010-10-13 7 views
9

zuordnen Ich habe eine ListView, die Namen von Ländern zeigt. Ich habe die Namen in strings.xml als String-Array namens country_names gespeichert.Verwenden von HashMap, um eine Zeichenfolge und Int

In die Listview bevölkert, verwende ich einen ArrayAdapter, die von strings.xml liest:

String[] countryNames = getResources().getStringArray(R.array.country_names); 
ArrayAdapter<String> countryAdapter = new ArrayAdapter<String>(this, R.layout.checked_list, countryNames); 
myList.setAdapter(countryAdapter); 

Jetzt auch ich habe einen Countrycode für jedes Land. Wenn ein bestimmter Ländername auf die ListView geklickt wird, muss ich den entsprechenden CountryCode toasten.

Ich verstehe die Implementierung einer HashMap ist die beste Technik dafür. Soweit ich weiß, wird die HashMap mit der Funktion put() gefüllt.

myMap.put("Country",28); 

Nun meine Fragen sind:

  1. Ist es möglich, die string.xml Array zu lesen und verwenden, um die Karte zu füllen? Ich meine, ich möchte Elemente zur Karte hinzufügen, aber ich muss dazu in der Lage sein, die Elemente aus einem anderen Array zu lesen. Wie kann ich das machen?

    Der Grund, warum ich frage, ist, weil ich die Ländernamen und Codes an einem Ort behalten möchte, wo es einfacher ist, sie hinzuzufügen/zu entfernen/zu modifizieren.

  2. Die String-Arrays werden in strings.xml gespeichert. Wo müssen ähnliche Integer-Arrays gespeichert werden? Im Werteordner, aber unter einer bestimmten XML-Datei? sie programmatisch setzen in den HashMap String-Array und Integer-Array, und dann:

Antwort

26
  1. Als eine der Möglichkeiten, können Sie speichern 2 verschiedene Arrays in XML.

    Definition von Arrays:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <string-array name="countries_names"> 
         <item>USA</item> 
         <item>Russia</item> 
        </string-array> 
    
        <integer-array name="countries_codes"> 
         <item>1</item> 
         <item>7</item> 
        </integer-array> 
    </resources> 
    

    Und Code:

    String[] countriesNames = getResources().getStringArray(R.array.countries_names); 
    int[] countriesCodes = getResources().getIntArray(R.array.countries_codes); 
    
    HashMap<String, Integer> myMap = new HashMap<String, Integer>(); 
    for (int i = 0; i < countriesNames.length; i++) { 
        myMap.put(countriesNames[i], countriesCodes[i]); 
    } 
    
  2. Es kann eine Datei mit einem beliebigen Namen sein.

+0

Hallo, Sergey. Ich möchte wissen, wie Sie die Werte programmatisch in die HashMap einfügen. Sie können ein Code-Snippet in Ihrer Antwort teilen. Zu 2), danke, das ist, was ich gesucht habe. – kiki

+0

Ich habe meine Antwort bearbeitet. –

+0

Hey, vielen Dank! Ich war verwirrt, ob put() so funktionieren würde. – kiki

Verwandte Themen