如何在Android中编辑Spinner错误,如编辑文本?

时间:2016-10-19 05:08:15

标签: android android-edittext spinner

我有一个微调器,其中我有国家列表,如果用户没有从列表中选择国家名称我想要的是我想在微调器中显示错误,如编辑文本。如何执行此操作?

微调器的代码:

    /*Country Spinner*/
    m_countrySpinner = (Spinner) findViewById(R.id.country_spinner);
    ArrayAdapter<CCountryStorage> adapter = new ArrayAdapter<>(getApplicationContext(), R.layout.country_spinner, CCountryListStorage.item);
    m_countrySpinner.setAdapter(adapter);
    m_countrySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            CCountryStorage operatorName = CCountryListStorage.item[position];
            m_selectedCountryCode = operatorName.code;
            Log.e(TAG, "Operator code:-" + m_selectedCountryCode);
            mSpinnerItem = m_countrySpinner.getSelectedItem().toString();
            if (position > 0) {
                checkForEmptyField();
            } else {

                m_RegisterButton.setEnabled(false);
                m_RegisterButton.setBackgroundColor(Color.rgb(192, 192, 192));
            }

        }

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

        }
    });

2 个答案:

答案 0 :(得分:0)

当您使用Spinner时,

textview课程将返回getSelectedView()。因此,您可以间接使用setError()

 ((TextView)spinner.getSelectedView()).setError("Your Error msg Here");

为了更好地理解:

  

getSelectedView()

     

查看:与当前所选项目对应的视图,如果未选择任何内容,则为null。

     

它将返回TextView。所以我们可以设置错误   上方。

有关详细信息,请访问文档:https://developer.android.com/reference/android/widget/AbsSpinner.html

答案 1 :(得分:0)

她的解决方案有Creating a setError() for the Spinner。 只需将以下代码放入验证函数中:

TextView errorText = (TextView)mySpinner.getSelectedView();
errorText.setError("");
errorText.setTextColor(Color.RED);//just to highlight that this is an error
errorText.setText("my actual error text");//changes the selected item text to this

但是,在进行验证时,请确保Spinner适配器中至少有一个值。如果没有,就像一个空的适配器等待填充,让你的适配器得到一个空字符串:

ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, new String[]{""});
mySpinner.setAdapter(adapter);

干杯!