2010-10-13 47 views
9

Tôi có một ListView hiển thị tên các quốc gia. Tôi đã lưu trữ các tên trong strings.xml dưới dạng mảng chuỗi được gọi là country_names.Sử dụng HashMap để ánh xạ một Chuỗi và int

Trong populating ListView, tôi sử dụng một ArrayAdapter mà đọc từ strings.xml:

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

Bây giờ tôi cũng có một CountryCode cho mỗi quốc gia. Khi một tên quốc gia cụ thể được nhấp vào ListView, tôi cần phải Toast CountryCode tương ứng.

Tôi hiểu việc triển khai HashMap là kỹ thuật tốt nhất cho việc này. Theo như tôi biết, HashMap được điền bằng hàm put().

myMap.put("Country",28); 

Bây giờ câu hỏi của tôi là:

  1. Có thể đọc các mảng string.xml và sử dụng nó để cư Map? Ý tôi là, tôi muốn thêm các mục vào Bản đồ, nhưng tôi phải có khả năng làm như vậy bằng cách đọc các mục từ một mảng khác. Tôi có thể làm cái này như thế nào?

    Lý do cơ bản tôi hỏi là vì tôi muốn giữ tên và mã quốc gia ở nơi dễ dàng thêm/xóa/sửa đổi chúng.

  2. Chuỗi mảng được lưu trữ trong strings.xml. Các mảng số nguyên tương tự phải được lưu ở đâu? Trong thư mục giá trị, nhưng trong bất kỳ tệp XML cụ thể nào?

Trả lời

26
  1. Là một trong những khả năng, bạn có thể lưu trữ 2 mảng khác nhau trong XML: mảng chuỗi và mảng số nguyên, và sau đó lập trình đặt chúng trong HashMap.

    Định nghĩa của mảng:

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

    Và mã:

    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. Nó có thể là một tập tin với tên bất kỳ.

+0

Xin chào, Sergey. Tôi muốn biết LÀM THẾ NÀO để lập trình các giá trị vào HashMap.Could bạn chia sẻ một đoạn mã trong câu trả lời của bạn. Đến 2), cảm ơn, đó là những gì tôi đang tìm kiếm. – kiki

+0

Tôi đã chỉnh sửa câu trả lời của mình. –

+0

Xin chào, cảm ơn rất nhiều! Tôi đã bối rối cho dù put() sẽ làm việc theo cách đó. – kiki

Các vấn đề liên quan