2014-09-15 1 views
0

나는 지금 내 안드로이드 응용 프로그램의 내부에 읽어 찾고 있어요데이터 검색

<string-array name="level1-1"> 
    <item name="id">a</item> 
    <item name="id">b</item> 
</string-array> 
<string-array name="level1-2"> 
    <item name="id">c</item> 
    <item name="id">d</item> 
</string-array> 
<array name="level1"> 
    <item>@array/level1-1</item> 
    <item>@array/level1-2</item> 
</array> 
<string-array name="level2-1"> 
    <item name="id">e</item> 
    <item name="id">f</item> 
</string-array> 
<string-array name="level2-2"> 
    <item name="id">g</item> 
    <item name="id">h</item> 
</string-array> 
<array name="level2"> 
    <item>@array/level2-1</item> 
    <item>@array/level2-2</item> 
</array> 
<array name="top_level"> 
    <item>@array/level1</item> 
    <item>@array/level2</item> 
</array> 

같은 세 가지 차원 내 arrays.xml의 배열, 뭔가가 있어요 가정 해 보겠습니다 . 비슷한 질문을 읽으면서 TypedArrays가 데이터를 검색하는 올바른 방법이고 TypedArray로 전체 3 차원 청크를 검색하는 것이 어렵지는 않지만 다른 데이터를 검색 할 수있는 도구가없는 것처럼 보였습니다. ID를 사용하는 TypedArrays.

그래서 어떻게 3 차원 TypedArray에서 2 차원 "슬라이스"를 검색 할 수 있습니까?

답변

0

나는 이미 혼자서 알아 냈습니다. 함수 호출 getSlice(array, K)해야한다 질문에 주어진 예에서와 같이

public TypedArray getSlice(TypedArray ta, long k) { 
    Resources res = getResources(); 

    int id = ta.getResourceId((int)k, 0); 
    return res.obtainTypedArray(id); 
} 

: 일부 자바 코드는 위의 예에서와 같이 "슬라이스"를 검색하는 작업을 수행 할 수 있습니다.

1

전나무가 필요한 경우 마지막 두 HashMaps을로의 HashMap을 만들 수있는 XML

List<String> tablel1-1 = Array.asList(getResources().getStringArray(R.array.table1-1)); 
    List<String> tablel1-2 = Array.asList(getResources().getStringArray(R.array.table1-1)); 

    HashMap<List<String>,List<String>> level1 = new HashMap<List<String>,List<String>(table1-1,table1-2); 


    List<String> tablel2-1 = Array.asList(getResources().getStringArray(R.array.table2-1)); 
    List<String> tablel2-2 = Array.asList(getResources().getStringArray(R.array.table2-1)); 

    HashMap<List<String>,List<String>> level2 = new HashMap<List<String>,List<String>(table2-1,table2-2); 

에서 배열을 얻을 수 있습니다.

Hashmap<Hashmap<List<String>,List<String>>,Hashmap<List<String>,List<String>>> top_level = new 
       Hashmap<Hashmap<List<String>,List<String>>,Hashmap<List<String>,List<String>>>(level1,level2); 
+0

위 예제에서 더 큰 배열이나 더 많은 차원에서 작동하는지 확신 할 수 없지만 가장 쉬운 예제를 제공하려고했습니다. 일반화하자 : N 차원을 갖는 TypedArray 배열을 가지며 각 차원은 [1..n]에 속하는 M (i) 요소를 갖는다. 우리는 인덱스 K를 얻습니다. 배열 자체를 검색하기 위해서 arrays.xml을 사용하여 배열 [K]를 검색하려면 어떻게해야합니까? –

+0

Java의 ArrayList에는 get (int index) 메서드가 있습니다. int는 부호있는 32 비트 값이며 최대 값은 2,147,483,647입니다. – ArmDroid

+0

HashMap은 항상 2의 거듭 제곱의 크기를 가진 배열을 사용하므로 최대 2^30 = 1073741824 개의 요소가 될 수 있습니다. – ArmDroid