TextChangeEvents - shiraji/androidannotations GitHub Wiki

Since AndroidAnnotations 2.6

@TextChange

This annotation is intended to be used on methods to receive events defined by android.text.TextWatcher.onTextChanged(CharSequence s, int start, int before, int count) when the text is changed on the targeted TextView or subclass of TextView. The annotation value should be one or several R.id.* fields that refers to TextView or subclasses of TextView. If not set, the method name will be used as the R.id.* field name. The method may have multiple parameter:

  • A android.widget.TextView parameter to know which view has received this event
  • A java.lang.CharSequence parameter to get the modified text.
  • An int parameter named start to get the start position of the modified text.
  • An int parameter named before to know the text length before modification.
  • An int parameter named count to know the number of modified characters.

Some usage examples of @BeforeTextChange annotation:

 @TextChange(R.id.helloTextView)
 void onTextChangesOnHelloTextView(CharSequence text, TextView hello, int before, int start, int count) {
 	// Something Here
 }
 
 @TextChange
 void helloTextViewTextChanged(TextView hello) {
 	// Something Here
 }
 
 @TextChange({R.id.editText, R.id.helloTextView})
 void onTextChangesOnSomeTextViews(TextView tv, CharSequence text) {
 	// Something Here
 }
 
 @TextChange(R.id.helloTextView)
 void onTextChangesOnHelloTextView() {
 	// Something Here
 }

@BeforeTextChange

This annotation is intended to be used on methods to receive events defined by android.text.TextWatcher.beforeTextChanged(CharSequence s, int start, int count, int after) before the text is changed on the targeted TextView or subclass of TextView. The annotation value should be one or several R.id.* fields that refers to TextView or subclasses of TextView. If not set, the method name will be used as the R.id.* field name. The method may have multiple parameters:

  • A android.widget.TextView parameter to know which view has targeted this event
  • An java.lang.CharSequence parameter to get the text before modification.
  • An int parameter named start to get the start position of the modified text.
  • An int parameter named count to know the number of modified characters.
  • An int parameter named after to know the text length after the text modification.

Some usage examples of @BeforeTextChange annotation:

 @BeforeTextChange(R.id.helloTextView)
 void beforeTextChangedOnHelloTextView(TextView hello, CharSequence text, int start, int count, int after) {
 	// Something Here
 }
 
 @BeforeTextChange
 void helloTextViewBeforeTextChanged(TextView hello) {
 	// Something Here
 }
 
 @BeforeTextChange({R.id.editText, R.id.helloTextView})
 void beforeTextChangedOnSomeTextViews(TextView tv, CharSequence text) {
 	// Something Here
 }
 
 @BeforeTextChange(R.id.helloTextView)
 void beforeTextChangedOnHelloTextView() {
 	// Something Here
 }

@AfterTextChange

This annotation is intended to be used on methods to receive events defined by android.text.TextWatcher.afterTextChanged(Editable s) after the text is changed on the targeted TextView or subclass of TextView. The annotation value should be one or several R.id.* fields that refers to TextView or subclasses of TextView. If not set, the method name will be used as the R.id.* field name. The method may have multiple parameter:

  • A android.widget.TextView parameter to know which view has targeted this event
  • An android.text.Editable to make changes on modified text.

Some usage examples of @BeforeTextChange annotation :

 @AfterTextChange(R.id.helloTextView)
 void afterTextChangedOnHelloTextView(Editable text, TextView hello) {
 	// Something Here
 }
 
 @AfterTextChange
 void helloTextViewAfterTextChanged(TextView hello) {
 	// Something Here
 }
 
 @AfterTextChange({R.id.editText, R.id.helloTextView})
 void afterTextChangedOnSomeTextViews(TextView tv, Editable text) {
 	// Something Here
 }
 
 @AfterTextChange(R.id.helloTextView)
 void afterTextChangedOnHelloTextView() {
 	// Something Here
 }

Since AndroidAnnotations 3.1

@EditorAction

This annotation is intended to be used on methods to receive events defined by android.widget.TextView.OnEditorActionListener#onEditorAction(android.widget.TextView, int, android.view.KeyEvent) when an action is performed on the editor.

The annotation value should be one or several R.id.* fields that refers to TextView or subclasses of TextView. If not set, the method name will be used as the R.id.* field name.

The method may have multiple parameters:

  • A android.widget.TextView parameter to know which view has targeted this event.
  • An int parameter to get the actionId.
  • A android.view.KeyEvent parameter.

The return type of the method can be either void or boolean. In case of boolean, the value returned from the annotated method will be returned in the generated listener method (indicating event consumption). If the annotated method is void, always true will be returned in the listener method (so the event is consumed).

Some usage examples of @EditorAction annotation:

  @EditorAction(R.id.helloTextView)
  void onEditorActionsOnHelloTextView(TextView hello, int actionId, KeyEvent keyEvent) {
    // Something Here
  }

  @EditorAction
  void helloTextViewEditorAction(TextView hello) {
    // Something Here
  }

  @EditorAction({R.id.editText, R.id.helloTextView})
  void onEditorActionsOnSomeTextViews(TextView tv, int actionId) {
    // Something Here
  }

  @EditorAction(R.id.helloTextView)
  void onEditorActionsOnHelloTextView() {
    // Something Here
  }


  @EditorAction(R.id.helloTextView)
  boolean onEditorActionsOnHelloTextView() {
    // Something Here
    return false;
  }

Since AndroidAnnotations 4.0

As of AndroidAnnotations 4.0 any subclass of TextView can be passed to the methods (eg. EditText).