2015-12-24 15 views
10

Tôi có mảng chuỗi trông như thế này:Get tên thuộc tính từ chuỗi mảng

<string-array name="USA"> 
    <item name="NY">001</item> 
    <item name="LA">002</item> 
    <item name="WA">003</item> 
</string-array> 

tôi có thể nhận được những con số theo:

Resources res = getResources(); 
int arryid = res.getIdentifier("USA", "array", getPackageName()); 
String[] numbers = res.getStringArray(arryid); 

Nhưng làm thế nào có thể tôi cũng nhận được những cái tên (NY, LA, WA)? Lưu ý rằng tôi có rất nhiều hạt ... Có thể sử dụng cách tiếp cận khác nhau?

+0

Thay vào đó, bạn có thể tạo HashMap. Kiểm tra [this] (http://stackoverflow.com/a/13032780/3022836) – Kunu

+0

Hãy thử điều này. http://stackoverflow.com/questions/7256514/search-value-for-key-in-string-array-android –

Trả lời

6

Trong official document không có name thuộc tính cho <item>. Vì vậy, tôi không nghĩ rằng sẽ có bất kỳ cách nào để có được những chìa khóa.

Tuy nhiên, nếu bạn muốn nhận tên là string hoặc string-array, bạn có thể đặt tên theo chương trình chứ không phải cho <item>.

1
String[] numbers = getResources().getStringArray(R.array.USA); 

để lấy dữ liệu từ việc sử dụng mảng.

numbers[id] 

thêm mảng như thế này.

<string-array name="USA"> 
    <item>NY</item> 
    <item>LA</item> 
    <item>WA</item> 
</string-array> 
4

Vì "001" chỉ là chỉ mục, tại sao không đơn giản sử dụng?

<string-array name="USA"> 
    <item>NY</item> 
    <item>LA</item> 
</string-array> 

Sau đó, chỉ cần sử dụng index + 1 cho vị trí:

String[] usaStates = getResources().getStringArray(R.array.USA); 

int index = 0; 

String firstStateName = usaStates[index]; 
int firstStatePosition = (index + 1); 

đó sang một bên, bạn có thể sử dụng hai mảng và ghép lại thành một HashMap:

<string-array name="USA"> 
    <item>NY</item> 
    <item>LA</item> 
</string-array> 

<string-array name="USA_pos"> 
    <item>001</item> 
    <item>002</item> 
</string-array> 

String[] usaStates = getResources().getStringArray(R.array.USA); 
String[] usaStatePositions = getResources().getStringArray(R.array.USA_pos); 

Map <String, String> map = new HashMap<>(usaStates.length); 

for (int i = 0; i < usaStates.length; i++) { 
    map.put(usaStates[i], usaStatePositions[i]); 
} 
Các vấn đề liên quan