【问题标题】:Example for sorted String-array in SpinnerSpinner 中排序字符串数组的示例
【发布时间】:2016-09-08 05:06:17
【问题描述】:

您好,我想在微调器中显示按字母排序的数组 name="planets_array"。 我找到了一些关于 .sort 集合和数组列表的信息,但没有让我了解它是如何工作的。 所以请帮助我并举例说明。 我在strings.xml中有:

<string-array name="planets_array">
    <item>Dein Ziel</item>
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
    <item>Jupiter</item>
    <item>Saturn</item>
    <item>Uranus</item>
    <item>Neptune</item>
</string-array>

在 Activity.java 中:

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

【问题讨论】:

    标签: java android arrays spinner


    【解决方案1】:

    你可以直接在你的xml中使用............

    <Spinner
               android:layout_width="150dp"
               android:layout_height="wrap_content"
               android:id="@+id/namespinner"
               android:entries="@array/planets_array"
               android:spinnerMode="dropdown"/>
    

    在 XML 中使用这一行 android:entries="@array/planets_array"......

    改变这一行……​​……

        String [] myArray=getResources().getStringArray(R.array.name);
        Arrays.sort(myArray);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item,myArray);
    

    享受编码............

    【讨论】:

    • 对不起,我忘记添加字符串数组应该按字母顺序排序
    【解决方案2】:

    您需要手动对数组进行排序

    Spinner spinner = (Spinner) findViewById(R.id.spinner1);
    String[] planets_array = getResources().getStringArray(R.array.planets_array);
    Arrays.sort(planets_array);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, planets_array);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    

    【讨论】:

      【解决方案3】:
          String arr[] = getResources().getStringArray(R.array.planets_array);     
          Comparator<String> stringComparator = new Comparator<String>() {
                          @Override
                          public int compare(String lhs, String rhs) {
                              return lhs.compareTo(rhs);
                          }
                      };
        Arrays.sort(arr,stringComparator);
      

      所以现在你得到了排序数组,所以你可以在ArrayAdapter 中使用它

      ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item, arr);
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      spinner.setAdapter(spinnerArrayAdapter);
      

      【讨论】:

        【解决方案4】:

        1.对行星数组进行排序。

        String[] planetsArray = getResources().getStringArray(R.array.planets_array);
        List<String> planetsList = Arrays.asList(planetsArray);
        Collections.sort(planetsList); //planetsArray will be sorted
        

        2。将排序后的数组列表传递给适配器。

        Spinner spinner = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, planetsList);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        

        【讨论】:

        • 对我来说它工作正常并且代码很容易理解。谢谢
        猜你喜欢
        • 2012-01-29
        • 1970-01-01
        • 2014-07-11
        • 2011-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多