根据Android

时间:2017-03-05 06:40:17

标签: java android validation android-edittext spinner

我的android xml文件中有一个editText和一个Spinner。我想根据用户输入更改EditText和Spinner的值。例如,如果用户在EditText中输入7,14,21,28并在Spinner中选择Days,我希望这些值分别自动更改为1,2,3,4周。这同样适用于可能的组合。

  1. 24小时 - 1天
  2. 7,14,21,28天 - 1,2,3,4周
  3. 4,8,12,16,20,24,28周 - 1,2,3,4,5,6,7个月
  4. 请在下面找到EditText和微调器的代码片段。

    的EditText:

    <android.support.design.widget.TextInputEditText
                    android:id="@+id/frequencyDaysEditText"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/frequencyTime"
                    android:inputType="number" />
    

    微调:

    <Spinner
                android:id="@+id/frequencySpinner"
                android:layout_width="0dp"
                android:layout_gravity="center"
                android:layout_height="wrap_content"
                android:layout_weight="0.2"
                android:entries="@array/frequencyArray" />
    

    频率数组的值为:{小时,天,周和月}。

    注意:我已将EditText的范围限制在1-30之间。此外,我希望在用户完成选择值时发生这种情况,而不是等到用户点击提交按钮。

    我想在Java中编写一个验证函数,它将执行上述功能。请提供任何答案帮助。

1 个答案:

答案 0 :(得分:0)

EditText edittext = (EditText) findViewById(R.id.frequencyDaysEditText);
Spinner spinner = (Spinner) findViewById(R.id.frequencySpinner);

edittext.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable s) {}

    @Override    
    public void beforeTextChanged(CharSequence s, int start,
      int count, int after) {
    }

    @Override    
    public void onTextChanged(CharSequence s, int start,
      int before, int count) {

        if(s.length() != 0)
        {
            String name= null;
            if(spinner != null && spinner .getSelectedItem() !=null
            {
                name = (String)spinner.getSelectedItem();

                  //Do what you want to do here

            } else  { 

            }
        }
    }
});