【问题标题】:Android Spinner not displaying array, but showing placesAndroid Spinner 不显示数组,但显示地点
【发布时间】:2016-04-07 20:39:10
【问题描述】:

我一直试图弄清楚如何让我的微调器连续工作好几天,但找不到任何可以帮助我的东西。我的微调器没有显示值。微调器打开,每个值的空格都在那里,但它们都是空白的。我尝试过使用ArrayList<String>String[] 数组,两者都没有区别,但我需要使用其中一个吗?我尝试了许多不同类型的 ArrayAdapter,但都没有奏效。下面我的代码中的一个是最接近的(如上所述),另外三个是我在网上看到的建议。我认为我的主要问题在于我的阵列适配器,但我不确定。

这是我的java类

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_info);

    engineSpinner = (Spinner)findViewById(R.id.rockets);
    engineNameList = StagesData.getEngineNameList();
    engStrList = engineNameList.toArray(new String[engineNameList.size()]);

    adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, engStrList);
    // adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, R.array.array_engines);
    // adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_dropdown_item_1line, R.id.rockets, engStrList);
    // adapter = ArrayAdapter.createFromResource(InfoActivity.this, android.R.layout.simple_spinner_item, R.array.engines);

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    engineSpinner.setAdapter(adapter);
    engineSpinner.setSelection(0);

这是我的 xml 微调器设置

<TableRow>
        <TextView
            android:text="@string/rocket"
            android:padding="3dp"/>
        <Spinner
            android:id="@+id/rockets"
            android:gravity="right"
            android:entries="@array/engines"
            android:clickable="true"
            android:textColor="@color/colorblack"
            android:spinnerMode="dropdown"
            android:backgroundTint="@color/colorPrimary" />
    </TableRow>

最后,这是我想从中提取的字符串数组文件(我是把我的字符串数组放在值文件夹中它自己的文件中,还是放在字符串文件中,我已经看到了不知道是哪个,谢谢)

<?xml version="1.0" encoding="utf-8">
<resources>
      <string-array name="engines">
            <item>Ant</item>
            <item>Dart</item>
            <item>Dawn</item>
            <item>Flea</item>
            <item>Hammer</item>
            <item>Kickback</item>
            <item>MainSail</item>
            <item>Mammoth</item>
            <item>Nerv</item>
            <item>Poodle</item>
            <item>Puff</item>
            <item>R.A.P.I.E.R</item>
            <item>Reliant</item>
            <item>Rhino</item>
            <item>Skipper</item>
            <item>Spark</item>
            <item>Spider</item>
            <item>Swivel</item>
            <item>Terrier</item>
            <item>Thud</item>
            <item>Thumper</item>
            <item>Twin Boar</item>
            <item>Twitch</item>
            <item>Vector</item>
      </string-array>
</resources>

所以回顾一下我的问题,我需要使用ArrayList&lt;String&gt; 还是String[],如何设置我的 ArrayAdapter,以及我需要将我的字符串数组放在哪里?
提前谢谢!

【问题讨论】:

  • 您的问题解决了吗?
  • 是的。抱歉我没有马上回复。太感谢了。我是 android 编程新手,我认为我的第一个应用程序作为我的第一个应用程序有点过于复杂,但它正在出现。再次感谢您。

标签: android spinner android-arrayadapter android-spinner


【解决方案1】:

我重新创建了您的示例,并且适合我更改

engStrList = engineNameList.toArray(new String[engineNameList.size()]); 
adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, engStrList);

engStrList = new String[]{"a","b","c"};
adapter = new ArrayAdapter<String>(InfoActivity.this, android.R.layout.simple_spinner_item, engStrList);

所以我的猜测是你应该检查 StagesData.getEngineNameList() 返回的内容。


另外,如果你使用你的字符串数组,这是正确的方法

ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.engines));

希望对你有帮助

【讨论】:

  • 非常感谢,我已经尝试了好几天了。我试过你的最后一个建议,效果很好。我猜我的 .getEngineNameList() 没有像我希望的那样返回字符串数组列表。
猜你喜欢
  • 1970-01-01
  • 2020-10-17
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2020-05-05
  • 2015-05-14
  • 1970-01-01
相关资源
最近更新 更多