【问题标题】:Android: Create spinner programmatically from arrayAndroid:以编程方式从数组创建微调器
【发布时间】:2011-02-16 13:33:41
【问题描述】:

我是 Android 新手,我正在尝试以编程方式创建一个微调器并用数组中的数据为其提供数据,但 Eclipse 给了我一个我无法处理的警告。

这是我得到的:

这个 ArrayList 包含应该在微调器中的元素(获取 稍后从文件中填充):

ArrayList<String> spinnerArray = new ArrayList<String>();

这是我在应该创建微调器的网站上找到的代码:

Spinner spinner = new Spinner(this);
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item,
                spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);

现在第二行 (ArrayAdapter...) 在 Eclipse 中给我一个警告说 "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized",我不知道如何解决这个问题(或者这首先意味着什么 :))。

这只是一个警告,应用程序似乎运行正常,但我仍然想了解问题所在并修复它。任何提示表示赞赏。

您好, 选择0r

【问题讨论】:

    标签: android spinner


    【解决方案1】:

    ArrayAdapter<String> 应该可以工作。

    即:

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
                (this, android.R.layout.simple_spinner_item,
               spinnerArray); //selected item will look like a spinner set from XML
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout
                                                         .simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerArrayAdapter); 
    

    【讨论】:

    • 我试过了,但错误只是略有变化 :) Type safety: The expression of type ArrayAdapter needs unchecked conversion to conform to ArrayAdapter&lt;String&gt;
    • 在您编辑帖子时快速发表评论 :) 我错过了第二个 &lt;String&gt;,您的代码现在可以工作了,非常感谢!
    • 使用ArrayAdapter&lt;String&gt; spinnerArrayAdapter = new ArrayAdapter&lt;String&gt;(activity, R.layout.simple_spinner_item); spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);,否则某些设备上的微调器中可能会显示单选按钮。
    • 你的回答很有帮助,你能告诉我,如果我使用两个微调器,我想要第一个微调器,那么第二个应该可以工作
    • 它也在android文档中描述了这个方法:developer.android.com/guide/topics/ui/controls/spinner.html
    【解决方案2】:

    数组

    一样
    // Array of choices
    String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"};
    
    // Selection of the spinner
    Spinner spinner = (Spinner) findViewById(R.id.myspinner);
    
    // Application of the Array to the Spinner
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item, colors);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
    spinner.setAdapter(spinnerArrayAdapter);
    

    【讨论】:

    • 我使用 ArrayList 执行此操作,因为我的数组来自循环(非静态)。
    【解决方案3】:

    以下 3 行代码 为我工作,其中包含从项目资源加载的名为 shoes字符串数组

    Spinner              spinnerCountShoes = (Spinner)findViewById(R.id.spinner_countshoes);
    ArrayAdapter<String> spinnerCountShoesArrayAdapter = new ArrayAdapter<String>(
                         this,
                         android.R.layout.simple_spinner_dropdown_item, 
                         getResources().getStringArray(R.array.shoes));
    spinnerCountShoes.setAdapter(spinnerCountShoesArrayAdapter);
    

    这是我的资源文件 (res/values/arrays.xml),其 string-array 名为 shoes:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="shoes">
            <item>0</item>
            <item>5</item>
            <item>10</item>
            <item>100</item>
            <item>1000</item>
            <item>10000</item>
        </string-array>
    </resources>
    

    如果需要,使用这种方法可以很容易地使其成为多语言。

    【讨论】:

      【解决方案4】:

      这实际上对我有用

          ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
                  this, android.R.layout.simple_spinner_item, spinnerArray);
          spinnerArrayAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
           
          Spinner spinner = (Spinner) findViewById( R.id.spinner );
          spinner.setAdapter(spinnerArrayAdapter);
      

      【讨论】:

      • 当你这样做spinner = (Spinner) findViewById( R.id.spinner );时,这个Spinner spinner = new Spinner(this);的目的是什么
      • 为什么错误:没有找到适合 ArrayAdapter(,int,DetailData) 的构造函数 ArrayAdapter.ArrayAdapter(Context,int,int,List) 不适用?
      【解决方案5】:

      这对我有用:-

      String[] array = {"A", "B", "C"};
      String abc = "";
      
      
      Spinner spinner = new Spinner(getContext());
      ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, array); //selected item will look like a spinner set from XML
      spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      spinner.setAdapter(spinnerArrayAdapter);
      

      我正在使用片段。

      【讨论】:

        【解决方案6】:

        在 Kotlin 语言中,您可以这样做:

        val values = arrayOf(
            "cat",
            "dog",
            "chicken"
        )
        
        ArrayAdapter(
            this,
            android.R.layout.simple_spinner_item,
            values
        ).also {
            it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
            spinner.adapter = it
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-23
          • 2020-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-26
          相关资源
          最近更新 更多