Android Spinner 添加/删除条目

标签 android spinner

我正在创建一个 Android 应用程序,询问用户他们的出生日期和出生月份。我正在使用两个微调器(一个用于月份,一个用于一个月中的几天)。 我希望日期的微调器根据月份进行更改, 例如,2 月有 29 天,所以我希望日期微调器停在数字 29。但如果选择了 31 天的月份,我希望日期微调器上升到 31。

最好的方法是什么?我知道我可以使用 DatePicker,但我以前从未使用过它,我只需要一个月和一天(而不是年)。

debugText 只是我创建的一个 textView,用于测试我的微调器并确保我的编码到目前为止是正确的。

//代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.form);

    // Month

    monthSpinner = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> monthAdapter = ArrayAdapter
            .createFromResource(this, R.array.month,
                    android.R.layout.simple_spinner_item);
    monthAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    monthSpinner.setAdapter(monthAdapter);

    monthName = "January";

    // Day

    daySpinner = (Spinner) findViewById(R.id.spinner2);
    final ArrayAdapter<CharSequence> dayAdapter = ArrayAdapter
            .createFromResource(this, R.array.day,
                    android.R.layout.simple_spinner_item);
    dayAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_item);
    daySpinner.setAdapter(dayAdapter);

    debugText = (TextView) findViewById(R.id.debugText);
    debugText.setText("Jaunary");

    daySpinner = (Spinner) findViewById(R.id.spinner2);

    monthSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub

            int monthPos = monthSpinner.getSelectedItemPosition();
            switch (monthPos) {
            case 0:
                debugText.setText("January");

                break;
            case 1:

                debugText.setText("February");

                break;
            case 2:
                debugText.setText("March");

                break;
            case 3:
                debugText.setText("April");

                break;
            case 4:
                debugText.setText("May");

                break;

            case 5:
                debugText.setText("June");

                break;
            case 6:

                debugText.setText("July");

                break;
            case 7:
                debugText.setText("August");

                break;
            case 8:
                debugText.setText("September");

                break;
            case 9:
                debugText.setText("October");

                break;

            case 10:
                debugText.setText("November");

                break;
            case 11:
                debugText.setText("December");

                break;
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

}

最佳答案

确实,DatePicker 是执行此操作的最简单方法,否则您将如何解释闰年以显示 2 月的额外日期?但如果您坚持使用 Spinners,我会这样做:

  1. 首次显示 View 时,禁用 daySpinner,填充 monthSpinner 并将选择设置为空。
  2. 在 monthSpinner 的 OnItemSelected 监听器中,一旦它更改为一个月,启用 daySpinner 并根据所选月份,使用正确的天数 ArrayAdapter 填充 daySpinner(例如,您将有 4 个数组,第 1 天到第 28 天,1到 29、1 到 30、1 到 31)并将适配器设置为 daySpinner。
  3. 当用户更改 monthSpinner 选择时,您必须再次重建 daySpinner。

最后,单击“确定”按钮后,只需从微调器中选择月份和日期即可。

关于Android Spinner 添加/删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496445/

相关文章:

android - react native : ReferenceError: Can't find variable: require (line 1 in the generated bundle)

android - 成功后数字电话号码为空

java - 来自数据库的微调器值给出错误

c++ - QTableWidget 中的 QComboBox 和 QSpinBox 具有适当的对齐方式

java - 如何获取位置坐标?

java - 插入后无法从 SQLite 中找到列

java - 如何在 Java 中获取此 JSON 值?

java - Android 自定义微调器,带图像选择功能

android - 以编程方式设置微调器的选定项

javascript - jQuery 微调器使用问题