2015-04-07 129 views
2

如何访问Android TypedArray中的第N个字符串数组? 试图通过入侵访问TypedArray是行不通的,奇怪的是它似乎没有定义的getStringArray()公共方法。Android从TypedArray获取字符串数组

的代码看起来是这样的:

//Get array of breed stats by index contained in breed index. 
Resources res = getResources(); 
TypedArray dogBreedInfo = res.obtainTypedArray(R.array.dog_breeds); 
String[] selected_breedInfo = dogBreedInfo.get***?????***(breed,0); 

Android Developers TypedArray Refrence

<array name="dog_breeds"> 
     <item> 
      <string-array name="black_russian_terrier"> 
       <item>Working Dogs</item> 
       <item>2\'2" - 2\'6"</item> 
       <item>80 - 140 lbs</item> 
       <item>10 - 11 years</item> 
      </string-array> 
     </item> 
     <item> 
      <string-array name="boxer"> 
       <item>Working Dogs</item> 
       <item>1\'9" - 2\'1"</item> 
       <item>60 - 70 lbs</item> 
       <item>10 - 12 years</item> 
      </string-array> 
     </item> 
. 
. 
. 
+0

是否有可能扩展说getString来处理这些类型的数组? –

回答

1

你可以试试这个!

getResources().getStringArray(R.id.dog_breeds)[selectedIndex]; 

- 和你可以得到你想要的解决方案 - 请 让我知道,如果它是有益还是没有,或者你也可以纠正我,如果我错了!

+0

错误:(86,92)error:array required,但TypedArray found –

+0

可能没有解决@ Bob的问题,但解决了我的问题。工作正常。谢谢! +1 – Rick

+0

@瑞克欢迎! – Hardy

0

我建议你改变你的XML文件有点像:

使用单独的array针对不同的品种信息:

 <array name="Type_of_dog"> 
      <item>black_russian_terrier</item> 
      <item>boxer</item> 
      <item>3rd type</item> 
      <item>4th type</item> 
     </array> 


     <array name="characteristic_1"> 
      <item>Working Dogs</item> 
      <item>Working Dogs</item> 
      <item>...</item> 
      <item>...</item> 
     </array> 

     <array name="characteristic_2"> 
      <item>2\'2" - 2\'6"</item> 
      <item>1\'9" - 2\'1"</item> 
      <item>...</item> 
      <item>...</item> 
     </array> 

     <array name="characteristic_3"> 
      <item>80 - 140 lbs</item> 
      <item>60 - 70 lbs</item> 
      <item>...</item> 
      <item>...</item> 
     </array> 

     <array name="characteristic_4"> 
      <item>10 - 11 years</item> 
      <item>10 - 12 years</item> 
      <item>...</item> 
      <item>...</item> 
     </array> 

从Java文件,访问它们:

public void getBreedInfo(int index){ 
    Resources resources = getResources(); 
    TypedArray type = resources.obtainTypedArray(R.array.Type_of_dog); 
    TypedArray char1 = resources.obtainTypedArray(R.array.characteristic_1); 
    TypedArray char2 = resources.obtainTypedArray(R.array.characteristic_2); 
    TypedArray char3 = resources.obtainTypedArray(R.array.characteristic_3); 
    TypedArray char4 = resources.obtainTypedArray(R.array.characteristic_4); 

    if(type.equals("black_russian_terrier")) { 
     // do it something for type 1 
    } else if(type.equals("boxer") { 
     // do it something for type 2 
    } 

    type.recycle(); 
    char1.recycle(); 
    char2.recycle(); 
    char3.recycle(); 
    char4.recycle(); 

} 

参考回答:this

希望你将让你的代码工作