【问题标题】:Android spinner prompt not working [duplicate]Android微调器提示不起作用[重复]
【发布时间】:2011-09-06 03:40:29
【问题描述】:

我有在我的应用程序中使用的 Spinner。他们工作正常,但有一个例外。我为每一个都设置了提示,但它们没有显示。我在onCreate 期间将ArrayAdapters 设置为微调器,我猜setAdapter 方法会自动将选择设置为位置0。有没有办法设置提示并使其按预期工作?

这是一段代码:

来自布局文件:

<Spinner android:id="@+id/selPunter"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:prompt="@string/select_quarterback_prompt"
         android:layout_marginLeft="20sp"
         android:layout_marginRight="20sp" />

来自活动:

offenseList = new ArrayAdapter<PlayerVO>(this,
                                         R.layout.select_item_closed,
                                         gdm.getPlayersByTeamId(offenseId));
offenseList.setDropDownViewResource(R.layout.select_item);
selKicker.setAdapter(offenseList);

【问题讨论】:

  • 对不起,我只想说我觉得你称它为“代码片段”很有趣,因为它听起来像“密码片段”。 :)
  • 哈哈,我很高兴我能笑一笑。现在也许是我的答案? :)
  • 什么东西没有显示?微调器下拉对话框的标题(在 xml 中称为提示)还是下拉对话框本身?

标签: android spinner android-arrayadapter prompt


【解决方案1】:

即使您将 OnItemSelectedListener 放在活动的 onStart() 方法中,这似乎也会发生。

我针对这个问题所做的工作是在我的资源数组的位置 0 中放置一条默认消息(“选择行程类型”)。因此,当调用 OnItemSelectedListener 时,如果选择了位置 0,则什么也不做。这是我的代码:

 mTripTypeSpinner.setOnItemSelectedListener(new OnItemSelectedListener(){

        @Override
        public void onItemSelected(AdapterView<?> parent,View v,int position,long rowId) {
            //boolean used for hiding spinner
            boolean hideSpinner = true;

            switch(position){
                case 0:
                    //nothing was selected - defualt "Select Trip Type"
                    hideSpinner = false;
                    break;
                case 1:
                    mCurrentStop.setStopType(Stop.STOP_TYPE.DELIVERY);
                    break;
                case 2:
                    mCurrentStop.setStopType(Stop.STOP_TYPE.START_OF_BREAK);
                    break;
                case 3:
                    mCurrentStop.setStopType(Stop.STOP_TYPE.END_OF_BREAK);
                    break;
                case 4:
                    mCurrentStop.setStopType(Stop.STOP_TYPE.START_OF_LUNCH);
                    break;
                case 5:
                    mCurrentStop.setStopType(Stop.STOP_TYPE.END_OF_LUNCH);
                    break;
                case 6:
                    mCurrentStop.setStopType(Stop.STOP_TYPE.END_OF_TRIP);
                    break;
            }

            //display other data screens
            displayData(hideSpinner);
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            mCurrentStop.setStopType(Stop.STOP_TYPE.DELIVERY);
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多