2017-03-05 19 views
0

私はandroid xmlファイルにeditTextとSpinnerを持っています。私はユーザー入力に基づいてEditTextとSpinnerの値を変更したいと思います。たとえば、ユーザーがEditTextに7,14,21,28を入力してSpinnerでDaysを選択した場合、値は自動的に1,2,3,4 Weeksに変更されます。同じことが可能な組み合わせとして適用されます。Androidのユーザー入力に基づいてEditTextとSpinnerの値を変更します。

  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ヶ月

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で検証関数を記述したいと思います。回答をお寄せください。

答えて

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 { 

      } 
     } 
    } 
}); 
関連する問題