java - 如何设置 AppCompatSpinner 的文本?请查看详情

标签 java android android-studio datepicker android-spinner

我有一个 AppCompatSpinner,我将其条目保存在 strings.xml 文件中,如下所示:

<string-array name="startDayList">
        <item>Today</item>
        <item>Tomorrow</item>
        <item>Pick a day..</item>
</string-array>

使用以下代码将其指定为 AppCompatSpinner 的条目后:android:entries="@array/startDayList",AppCompatSpinner 上显示的标题或文本是今天

在这里,当用户选择 Pick a day.. 条目时,会显示一个 DatePicker 并允许他选择日期/日期。方法如下(案例 2):

startDaySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                DateFormat currentDateFormat = new SimpleDateFormat("dd-MM-yyyy");
                startDayString = currentDateFormat.format(new Date());

                switch (i) {
                    case 0:

                        startDayString = currentDateFormat.format(new Date());
                        break;

                    case 1:

                        Calendar calendar = Calendar.getInstance();

                        calendar.add(Calendar.DAY_OF_YEAR, 1);
                        Date tomorrow = calendar.getTime();

                        DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
                        startDayString = dateFormat.format(tomorrow);
                        break;

                    case 2:
                        final Calendar c = Calendar.getInstance();
                        mYearStartE = c.get(Calendar.YEAR);
                        mMonthStartE = c.get(Calendar.MONTH);
                        mDayStartE = c.get(Calendar.DAY_OF_MONTH);

                        DatePickerDialog datePickerDialog = new DatePickerDialog(PostSportRequest.this,
                                new DatePickerDialog.OnDateSetListener() {

                                    @Override
                                    public void onDateSet(DatePicker view, int year,
                                                          int monthOfYear, int dayOfMonth) {

                                        startDayString = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year;

                                        Toast.makeText(getBaseContext(), "startDayString: " + startDayString, Toast.LENGTH_SHORT).show();

                                    }
                                }, mYearStartE, mMonthStartE, mDayStartE);
                        datePickerDialog.show();
                        break;
                }

            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

这段代码保存了在 startDayString 字符串中选择的日期,但是 AppCompatSpinner 的文本仍然被设置为 Pick a day..

所以,我想知道如何将微调器的文本/标题设置为用户选择的日期/日期,而不是选择一天..

请告诉我。

最佳答案

在项目 View 上设置文本:

    startDaySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(final AdapterView<?> adapterView, View view, int i, long l) {


            DateFormat currentDateFormat = new SimpleDateFormat("dd-MM-yyyy");
            startDayString = currentDateFormat.format(new Date());

            switch (i) {
                case 0:

                    startDayString = currentDateFormat.format(new Date());
                    break;

                case 1:

                    Calendar calendar = Calendar.getInstance();

                    calendar.add(Calendar.DAY_OF_YEAR, 1);
                    Date tomorrow = calendar.getTime();

                    DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
                    startDayString = dateFormat.format(tomorrow);
                    break;

                case 2:
                    final Calendar c = Calendar.getInstance();
                    mYearStartE = c.get(Calendar.YEAR);
                    mMonthStartE = c.get(Calendar.MONTH);
                    mDayStartE = c.get(Calendar.DAY_OF_MONTH);

                    DatePickerDialog datePickerDialog = new DatePickerDialog(PurchaseActivity.this,
                            new DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {

                                    startDayString = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year;

                                    Toast.makeText(getBaseContext(), "startDayString: " + startDayString, Toast.LENGTH_SHORT).show();

                                    TextView mTextView = (TextView) adapterView.getSelectedView();
                                    mTextView.setText(startDayString);
                                }
                            }, mYearStartE, mMonthStartE, mDayStartE);
                    datePickerDialog.show();
                    break;
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

关于java - 如何设置 AppCompatSpinner 的文本?请查看详情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40745582/

相关文章:

android-studio - 为什么android studio不显示对象或变量的类型

java - 我可以在不提供 URL 中的端口的情况下访问我的 Spring Boot 应用程序吗?

c# - Xamarin.Android 如何在任何 View 上以编程方式设置涟漪效果?

android - 如何在Android应用程序中从Twitter获取用户信息?

android - 如何获得具有 2 个等宽列的 TableLayout

android - 在 Android studio 中使用 -Xlint 重新编译

Android Studio 问题 - 文件过早结束

Java 正则表达式捕获组索引

java - 线程中的异常 "AWT-EventQueue-0"java.lang.NumberFormatException : For input string:

java - 计算 firebase 中子节点的数量