【问题标题】:How to set text of an AppCompatSpinner? Please see details如何设置 AppCompatSpinner 的文本?请查看详情
【发布时间】:2016-11-22 15:21:11
【问题描述】:

我有一个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 上显示的标题或文本为 Today

在这里,当用户选择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..

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

请告诉我。

【问题讨论】:

    标签: java android android-studio datepicker android-spinner


    【解决方案1】:

    在项目视图上设置文本:

        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) {
    
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多