2014-08-28 116 views
2

我有一个ArrayAdapter<String>,我使用才能展示一个选择Dialog这样的:如何从字符串资源获取ArrayAdapter字符串?

dialogBuilder.setAdapter(arrayAdapter ... 

这是ArrayAdapter

arrayAdapter = new ArrayAdapter<String>(StartActivity.this, android.R.layout.select_dialog_singlechoice); 
arrayAdapter.addAll("A Tropical Rainforest", "Backwater Chorus", "Big River", "Bird Song 1", "Bird Song 2", "Cave Ambience", "Cold Stormy Wind", 
      "Crickets", "Deep Woods", "Fireplace", "Jungle River", "Long Soothing Rain", "Ocean Waves 1", "Ocean Waves 2", 
      "Pacific And Songbirds", "Pig Frogs", "Small Green Froggies", "Small Rapid", "Sparkling Water", "Stormy Wind", 
      "Thunder and Rain", "Thunderstorm Inner Perspective", "Twilight", "Waterfall", "Wind"); 

现在的问题是,我想使这个多这意味着我需要从字符串资源中获取所有这些字符串。但我不能这样做,因为字符串资源返回int,而我只能在那里插入String

任何想法我可以做到这一点?

+0

创建一个与您需要的字符串相对应的资源ID数组,并在某种循环中使用getResources()。getString(resourceArray [pos])从数组中动态添加字符串 – zgc7009 2014-08-28 22:13:24

+0

谢谢,我会试试看。 – Guy 2014-08-28 22:25:04

+0

哈哈这就是为什么你应该阅读整个问题,我以为你说你需要访问int id。叹息哈哈 – zgc7009 2014-08-28 23:43:14

回答

0

创建一个数组资源

<resources> 
    <string-array name="values"> 
     <item>A Tropical Rainforest</item> 
     <item>Backwater Chorus</item> 
     <item>Big River</item> 
     <item>Bird Song 1</item> 
     <item>And so on</item> 
    </string-array> 
</resources> 

而现在,你可以从代码检索值这样的:

String values[] = getResources().getStringArray(R.array.values); 
arrayAdapter.addAll(values); 
+0

谢谢,完美的作品! :) – Guy 2014-08-28 23:02:45

+0

不客气! ;) – 2014-08-28 23:04:16

0

首先,定义资源的字符串数组:

<string-array name="nature_things_array"> 
    <item>A Tropical Rainforest</item> 
    <item>Backwater Chorus</item> 
    <item>Big River</item> 
    <item>Bird Song 1</item> 
</string-array> 

然后将单项选项设置为AlertDialog.Builder

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setTitle(R.string.pick_color) 
     .setMultiChoiceItems(R.array.nature_things_array, null, 
        new DialogInterface.OnSingleChoiceClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which, 
        boolean isChecked) { 
       // ... 
      } 
     }) 
}); 
return builder.create(); 

你可以找到一个很好的android对话框手册here

相关问题