Home | History | Annotate | Download | only in text
      1 /*
      2  * Copyright (C) 2006 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.text;
     18 
     19 /**
     20  * When an object of a type is attached to an Editable, its methods will
     21  * be called when the text is changed.
     22  */
     23 public interface TextWatcher extends NoCopySpan {
     24     /**
     25      * This method is called to notify you that, within <code>s</code>,
     26      * the <code>count</code> characters beginning at <code>start</code>
     27      * are about to be replaced by new text with length <code>after</code>.
     28      * It is an error to attempt to make changes to <code>s</code> from
     29      * this callback.
     30      */
     31     public void beforeTextChanged(CharSequence s, int start,
     32                                   int count, int after);
     33     /**
     34      * This method is called to notify you that, within <code>s</code>,
     35      * the <code>count</code> characters beginning at <code>start</code>
     36      * have just replaced old text that had length <code>before</code>.
     37      * It is an error to attempt to make changes to <code>s</code> from
     38      * this callback.
     39      */
     40     public void onTextChanged(CharSequence s, int start, int before, int count);
     41 
     42     /**
     43      * This method is called to notify you that, somewhere within
     44      * <code>s</code>, the text has been changed.
     45      * It is legitimate to make further changes to <code>s</code> from
     46      * this callback, but be careful not to get yourself into an infinite
     47      * loop, because any changes you make will cause this method to be
     48      * called again recursively.
     49      * (You are not told where the change took place because other
     50      * afterTextChanged() methods may already have made other changes
     51      * and invalidated the offsets.  But if you need to know here,
     52      * you can use {@link Spannable#setSpan} in {@link #onTextChanged}
     53      * to mark your place and then look up from here where the span
     54      * ended up.
     55      */
     56     public void afterTextChanged(Editable s);
     57 }
     58